2017 09-25 mysql的基本应用

一.客户端工具

**采用命令行交互式客户端程序:mysql

(1)mysql选项及其用法:
首先通过mysql_secure_installation命令提高数据库的安全 
1设置数据库管理员root口令 
2 禁止root远程登录 
3 删除anonymous用户帐号 
4 删除test数据库


image.png

image.png

(2)此时通过mysql命令来登录数据库
mysql -uroot(指定登录用户) -p123456(登录密码) -hhost(指定服务器主机)


image.png

(3)mysql用户账号由两部分组成:
'USERNAME'@'HOST' HOST用于限制此用户可通过哪些远程主机连接mysql服务
支持使用通配符:
% 匹配任意长度的任意字符
172.16.0.0/16 或 172.16.%.%
_ 匹配任意单个字符
image.png

(4)mysql中的一些其他命令选项

mysql > status(查看数据库信息)
image.png

mysql> select version();——查看版本号
image.png

注意:服务端命令:通过mysql协议发往服务器执行并取回结果 每个命令都必须命令结束符号;默认为分号 SELECT VERSION();

二.sql语句

(1)SQL语句构成
Keyword组成clause  多条clause组成语句
SELECT * SELECT子句 
FROM products FROM子句 
WHERE price>400 WHERE子句
这是一组语句,由三个子句构成,SELECT,FROM和WHERE 都是关键字
例:

image.png

(2)SQL语句分类 
SQL语句:
DDL: Data Defination Language——数据定义语言
CREATE(创建), DROP(删除), ALTER(修改)
DML: Data Manipulation Language ——数据操作语言
INSERT(增加), DELETE(删除), UPDATE(修改)
DCL:Data Control Language——数据控制语言
GRANT(授权), REVOKE(取消授权)
DQL:Data Query Language——数据查询语言
SELECT
(3)sql语言规范
1 大部分时候数据库系统不区分大小写,但是建议用大写
2 字符串敞亮区分大小写
3 在该语句中可以单行或多行书写,但都必须以“;”结尾
4 关键字不能跨多行写或简写
例:
image.png

5 注释
SQL标准:
/注释内容/ 多行注释
-- 注释内容 单行注释,注意有空格 
MySQL注释: #

三.数据库操作

1创建数据库
create database db_name(数据库名);


image.png

删除数据库
drop database db_name;
查看数据库列表
mysql> show databases;
2 创建表
命令: create table +表的名字
字段信息:
col type1
PRIMARY KEY(col1,...)
INDEX(col1, ...)
UNIQUE KEY(col1, ...)
表选项:
ENGINE [=] engine_name
SHOW ENGINES;查看支持的engine类型
ROW_FORMAT [=] {DEFAULT|DYNAMIC|FIXED|COMPRESSED|REDUNDANT |COMPACT}
获取帮助:
mysql> HELP CREATE TABLE;
3 表操作
查看所有的引擎:SHOW ENGINES; 

查看表:SHOW TABLES [FROM db_name]; 
image.png

查看表结构:DESC [db_name.]tb_name; 
image.png

删除表:DROP TABLE [IF EXISTS] tb_name; 

查看表创建命令:SHOW CREATE TABLE tbl_name; 
查看表状态:SHOW TABLE STATUS LIKE 'tbl_name'\G ——换行查看,易读模式
4 数量类型
mysql支持多种列类型;
(1)数值类型
(2)日期/时间类型
(3)字符串类型
选择正确的数据类型原则
(1)更小的通常更好,尽量使用可正确存储数据的最小数据类型 
(2)简单就好,简单数据类型的操作通常需要更少的CPU周期 
(3)尽量避免NULL,包含为NULL的列,对MySQL更难优化
数据类型一:整型
• tinyint(m) 1个字节 范围(-128~127)
• smallint(m) 2个字节 范围(-32768~32767)
• mediumint(m) 3个字节 范围(-8388608~8388607)
• int(m) 4个字节 范围(-2147483648~2147483647)
• bigint(m) 8个字节 范围(+-9.22*10的18次方)
取值范围如果加了unsigned,则最大值翻倍,如tinyint unsigned 的取值范围为(0~255)
int(m)里的m是表示SELECT查询结果集中的显示宽度,并不影响实 际的取值范围
MySQL可以为整型类型指定宽度,例如Int(11),对绝大多数应用 这是没有意义的:它不会限制值的合法范围,只是规定了MySQL 的一些交互工具(例如MySQL命令行客户端)用来显示字符的个 数。对于存储和计算来说,Int(1)和Int(20)是相同的
数据类型二:浮点型
• float(m,d) 单精度浮点型 8位精度(4字节) m总个数,d小数位
• double(m,d) 双精度浮点型 16位精度(8字节) m总个数,d小 数位
• 设一个字段定义为float(6,3),如果插入一个数123.45678,实 际数据库里存的是123.457,但总个数还以实际为准,即6位
数据类型三:定点数
• 在数据库中存放的是精确值,存为十进制
• decimal(m,d) 参数m<65 是总个数,d<30且 d<m 是小数位
• MySQL5.0和更高版本将数字打包保存到一个二进制字符串 中(每4个字节存9个数字)。例如,decimal(18,9)小数点两 边将各存储9个数字,一共使用9个字节:小数点前的数字用4 个字节,小数点后的数字用4个字节,小数点本身占1个字节
• 浮点类型在存储同样范围的值时,通常比decimal使用更少的 空间。float使用4个字节存储。double占用8个字节
• 因为需要额外的空间和计算开销,所以应该尽量只在对小数 进行精确计算时才使用decimal——例如存储财务数据。但在 数据量比较大的时候,可以考虑使用bigint代替decimal
数据类型四:字符串
• char(n) 固定长度,最多255个字符
• varchar(n)可变长度,最多65535个字符
• tinytext 可变长度,最多255个字符
• text 可变长度,最多65535个字符
• mediumtext 可变长度,最多2的24次方-1个字符
• longtext 可变长度,最多2的32次方-1个字符
• BINARY(M) 固定长度,可存二进制或字符,允许长度为0M字节,
• VARBINARY(M) 可变长度,可存二进制或字符,允许长度 为0-M字节
• 内建类型:ENUM枚举, SET集合
char与varchar对比:
• 1.char(n) 若存入字符数小于n,则以空格补于其后,查询之时再将 空格去掉。所以char类型存储的字符串末尾不能有空格,varchar 不限于此。
• 2.char(n) 固定长度,char(4)不管是存入几个字符,都将占用4个 字节,varchar是存入的实际字符数+1个字节(n< n>255),所以 varchar(4),存入3个字符将占用4个字节。
• 3.char类型的字符串检索速度要比varchar类型的快 
varchar和text:
• 1.varchar可指定n,text不能指定,内部存储varchar是存入的实 际字符数+1个字节(n< n>255),text是实际字符数+2个字节。
• 2.text类型不能有默认值
• 3.varchar可直接创建索引,text创建索引要指定前多少个字符。 varchar查询速度快于text
5 修饰符:
所有类型:
• NULL 数据列可包含NULL值
• NOT NULL 数据列不允许包含NULL值
• DEFAULT默认值
• PRIMARY KEY 主键
• UNIQUE KEY 唯一键
• CHARACTER SET name 指定一个字符集 
数值型
• AUTO_INCREMENT 自动递增,适用于整数类型
• UNSIGNED 无符号

例子

image.png

6 表操作
(1)删除表——drop table +表名;
例: drop table students;该表被删除
(2)修改表——alter table +表名;
alter table students add(增加字段),drop(删除字段)
示例1:
alter table students3 add phone varchar(20) not null after name;


image.png

示例2:
alter table students3 add sex varchar(20) not null default 'm' after name;


image.png

示例3:
alter table students3 drop sex varchar(20) not null default 'm' after name;——删除表中的信息
示例4:修改字段名
alter table studenst3 change sex gender varchar(20) not null default 'm' after name;
image.png

示例5:修改字段属性
alter table students3 modify phone int (20) not null after age;
image.png

示例6:给字段增加索引,给字段增加唯一键

alter table students3 add index(age);


image.png

ALTER TABLE students ADD UNIQUE KEY(name);
image.png

创建索引——create index +索引名 +表名(对哪个字段增加索引)
例:
create index ageindex studenst3(age);
创建索引后通过show index from students3\G来查看索引
删除索引——drop index ageindex students3(age);

四.DML语句

要重点——增(insert) ,删(delete), 改(update)
1 insert
语法: insert into students3(id,name,age,phone,gender)values (1,'zhang',18,167878,'m');

image.png

创建多个信息:
insert into students3(id,name,age,phone,gender)values (4,'sun',22,149378,'f'),(5,'lu',23,1232142,'f');
image.png

select s.id ,e.name from students3 as s,emp1 as e where s.id=e.id and s.name rlike '.[no].';——只要包含no就匹配对应的名字
创建一个新表:
create table emp1(表之前不存在) select * from students3;
image.png

insert into emp1 select * from students3;——表事先存在,并且表的结构和students3相同
清空表:
(1) truncate table +表名;
(2)delete from +表名;
2 update:
update emp1 set age=29 where name='li';——修改li的年龄
image.png

示例:
update emp1 set age=21 ,gender='m' where id=5;
image.png

五. DQL语句

OL:select
用例子来说明:
例1:
select * from emp1 where age>=18 and age <= 25;——查找年龄在18到25之间的人


image.png

例2:
select * from emp1 where age between 18 and 25;
例3:
select * from emp1 where age between 18 and 25 order by age desc——按年龄倒序排序


image.png

select * from emp1 where age between 18 and 25 order by age ——正序排序
image.png

例4:
select id as 职员,name 姓名 from emp;——设置别名
例5:

倒序排名年龄跳过第一个人,看后两个人


image.png

例6:
like用法:
%——任意长度
_:——任意单个字符
rlike:正则表达式
is nul,is null
in ——代表指定特定的人
select * from emp1 where name like 'li';
image.png

select * from emp1 where name like 'l%';
image.png

正则表达方式:select * from emp1 where name relike 'l.*';
image.png

查询指定的人:select * from emp1 where name in ('wang','zhang');
image.png

别名关联两个表


六.用户账号

创建用户
create user 'username'@'host';
例: create userr 'root'@'192.168.136.%' identified by 'magedu';—创建root用户并设置密码为magedu
2 删除用户
drop user 'username'@'host'
3 更改口令
1)et password for 'user'@'host'=password('newpassword');
2)pdate user set password=password('newpassowrd') where user='root';
注意:上面修改表的命令不会马上生效,需执行FLUSH PRIVILEGES生效
4 查看当前用户
select user();
例: select user ,host ,password from mysql.user;


image.png

七.授权

  1. 权限级别:管理权限、数据库、表、字段、存储例程
  2. 授权的命令:
    grant all on zhangdb.* to root@'192.168.136.%';——授予所有权利
    此时在另一主机就可以通过 mysql -uroot -p1234 -h192.168.136.122进入数据库执行命令


    image.png

    赋予部分权限
    grant select,update,delete on zhangdb.* to root@'192.168.136.%';
    3 撤销权限
    revoke all on zhangdb.* from root@'192.168.136.%';
    注意:不论是授予权限还是撤销权限,都要执行FLUSH PRIVILEGES命令才能生效

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,732评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,496评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,264评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,807评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,806评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,675评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,029评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,683评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,704评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,666评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,773评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,413评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,016评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,204评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,083评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,503评论 2 343

推荐阅读更多精彩内容