此文最后修改于:12/11/2017 3:05:33 PM
涨姿势
①DDL(Data Definition Language):数据定义语言,用来定义数据库对象:库、表、列等。功能:创建、删除、修改库和表结构。
②DML(Data Manipulation Language):数据操作语言,用来定义数据库记录:增、删、改表记录。
③DCL(Data Control Language):数据控制语言,用来定义访问权限和安全级别。
④DQL(Data Query Language):数据查询语言,用来查询记录。
数据类型
TINYINT:1字节,小整数值。
SMALLINT:2字节,大整数值。
MEDIUMINT:3字节,大整数值。
INT或INTEGER:4字节,整型,大整数值。
FLOAT:单精度浮点数值。
DOUBLE(5,2):双精度浮点型数值,参数表示该浮点型数值最多有5位,其中必须有2位小数。
DECIMAL(M,D):小数值,参数表示该数值最多有M位,其中必须有D位小数。
CHAR:字符型,固定长度字符串类型:char(255)。你存入一个a字符,虽然a只占一个字符,但是它会自动给你加254个空格凑成255个长度。即数据的长度不足指定长度,它会补足到指定长度。
VARCHAR:可变长度字符串类型:- varchar(65535),你存入的数据多长它就是多长。它会抽出几个字节来记录数据的长度。
TEXT(CLOB):mysql独有的数据类型,字符串类型。
BLOB:字节类型。
YEAR:年份值,格式为:YYYY
DATA:日期类型,格式为:yyyy-MM-dd。
TIME:时间类型,格式为:hh:mm:ss。
TIMESTAMP:时间戳类型,格式为上面二者的综合。
DATETIME:混合日期和时间值,格式为:YYYYMMDD HHMMSS.
基本语法规则
1.DDL语法(操作数据库及表的结构)
----++----对数据库的操作----++----
1.1 查看所有数据库:
SHOW DATABASES;
1.2 使用数据库:
USE tbl;
1.3 创建数据库并指定编码:
CREATE DATABASE IF NOT EXISTS RUNOOB DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
1.4 删除数据库:
DROP DATABASE tbl;
1.5 修改数据库的编码:
ALTER DATABASE tbl CHARACTER SET UTF-8;
----++----对表结构的操作----++----
1.6 创建表:
CREATE TABLE IF NOT EXISTS `runoob_tbl`(
`runoob_id` INT UNSIGNED AUTO_INCREMENT,
`runoob_title` VARCHAR(100) NOT NULL,
`runoob_author` VARCHAR(40) NOT NULL,
`submission_date` DATE,
PRIMARY KEY ( `runoob_id` )
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
#①特别注意,创建表时候 表名与字段名都使用反引号。也试试英文状态下的“ ~ ”符号
#②反引号是为了区分 MySql 关键字与普通字符而引入的符号。
PS:如果你不想字段为 NULL 可以设置字段的属性为 NOT NULL, 在操作数据库时如果输入该字段的数据为NULL ,就会报错。
AUTO_INCREMENT定义列为自增的属性,一般用于主键,数值会自动加1。
PRIMARY KEY关键字用于定义列为主键。 您可以使用多列来定义主键,列间以逗号分隔。
ENGINE 设置存储引擎,CHARSET 设置编码。
1.7 查看当前数据库中所有表:
SHOW TABLES;
1.8 查看表结构:
DESC runoob_tbl;
1,9 删除表:
DROP runoob_tbl;
修改表:修改表有5个操作,但前缀都是一样的:
ALTER TABLE 表名
1.10 修改表之添加列:
#添加一个名为com的一列在description列之后
ALTER TABLE runoob_tbl
ADD COLUMN com DECIMAL(2,1) NULL
AFTER description;
1.11 修改表之修改列类型(modify):
#修改com列的类型为int(11)
ALTER TABLE runoob_tbl MODIFY com int(11);
1.12 修改表之 列名称 列类型 一起修改(change):
ALTER TABLE runoob_tbl CHANGE com com1 char(1);
1.13 修改表之删除列:
ALTER TABLE runoob_tbl DROP com1;
1.14 修改表之修改表名:
ALTER TABLE runoob_tbl RENAME TO PSJhhh;
部分截图:
初始表结构
向表中添加列
改列类型
其他修改
2.DDL语法(数据操作)
2.1 插入数据(记录)
INSERT INTO runoob_tbl
-> (id, name)
-> VALUES
-> ('psj','peng');
插入数据并读取表数据
2.2 修改数据
update runoob_tbl set name=2 where id=55;
where表示条件
2.3 删除整行
delete from runoob_tbl where id = 55;
delete from runoob_tbl #清空表
删除数值
3.DCL语法(数据控制)
3.1创建用户
create user 用户名@IP地址 identified by ‘密码’;
#只能指定ip地址上登录
create user 用户名@‘%’ identified by ‘密码’;
#可以在任意ip地址上登录
3.2 用户授权
语法:grant 权限1,…,权限n on 数据库.* to 用户名@IP地址;
其中权限1、2、n可以直接用all关键字代替。
权限例如:create,alter,drop,insert,update,delete,select。
3.3 撤销授权
语法:revoke 权限1,…,权限n on 数据库.* from 用户名@ ip地址;撤销指定用户在指定数据库上的指定权限。撤销例如:revoke create,delete on mydb1.* form user@localhost;表示的意思是撤消user用户在数据库mydb1伤的create、alter权限。
3.4 查看权限
查看指定用户的权限:show grants for 用户名@ip地址;
4.DQL语法(数据查询)
4.1 读取表字段(列)的数据(记录)
select * from runoob_tbl
select id from runoob_tbl
select distinct id from runoob_tbl #相同字段只显示一次
查询
#数字型字段可运算
select id from runoob_tbl
数字型字段可运算
4.2条件控制
1.条件查询。在后面添加where指定条件:select * from 表名 where 列名=指定值;
2.模糊查询:当你想查询所有姓张的记录。用到关键字like。eg:select * from 表名 where 列名 like ‘张_’;(代表匹配任意一个字符,%代表匹配0~n个任意字符)。
4.3排序(所谓升序和降序都是从上往下排列)
1.升序:select * form 表名 order by 列名 (ASC );
()里面的内容为缺省值;
2.降序:select * from 表名 order by 列名 DESC;3.使用多列作为排序条件: 当第一列排序条件相同时,根据第二列排序条件排序(当第二列依旧相同时可视情况根据第三例条件排序)。eg:select * from 表名 order by 列名1 ASC, 列名2 DESC;
意思是当列名1的值相同时按照列名2的值降序排。
4.4聚合函数
1.count:select count(列名) from 表名;
,纪录有效行数。2.max:select count(列名) from 表名;
,列中最大值。3.min:select sum(列名) from 表名;
,列中最小值。4.sum:select sum(列名) from 表名;
,求列的总值,null 和字符串默认为0。5.avg:select avg(列名) from 表名;
,一列的平均值。
4.5 分组查询
分组查询的信息都是组的信息,不能查到个人的信息,其中查询组的信息是通过聚合函数得到的。
语法:select 分组列名,聚合函数1,聚合函数2 from 表名 group by 该分组列名;
其中分组列名需要的条件是该列名中有重复的信息。
查询的结果只能为:作为分组条件的列和聚合函数;查处的信息都是组的信息。分组查询前,还可以通过关键字where先把满足条件的人分出来,再分组。语法为:select 分组列,聚合函数 from 表名 where 条件 group by 分组列;
分组查询后,也可以通过关键字having把组信息中满足条件的组再细分出来。语法为:select 分组列,聚合函数 from 表名 where 条件 group by 分组列 having 聚合函数或列名(条件);
4.6 LIMIT子句(mysql中独有的语法)
LIMIT用来限定查询结果的起始行,以及总行数。
例如:select * from 表名 limit 4,3;
表示起始行为第5行,一共查询3行记录。
4.7 优先级顺序
select>from>where>group by>having>order by
网友评论