1、SQL:是一种结构化查询语言(structured query language)
2、SQL语法:
(1)SQL语句可以在单行或多行书写,并以分号结尾
(2)可以使用空格和缩进来增强语句的 可读性
(3)MySQL不区分大小写,监视使用大写
2、语句分类
(1)数据定义语言DDL(data definition language):用来定义数据库对象例如库、表、列
》创建、删除、修改库和表结构
(2)数据操作语言DML(data manipulation language):用来定义数据库记录(数据)
》增、删、改表记录
(3)数据控制语言DCL(data control language): 用来定义访问权限和安全级别
(4)数据查询语言DQL(data quary language):用来查询记录(数据)
3、DDL
(1)数据库
》查看所有数据库:SHOW DATABASES,注:database是复数s,同时分号结尾
》切换要操作的数据库:USE dataName
》创建数据库:CREATE DATABASE (IF NOT EXISTS) mydb1 (CHARSET=utf8)
》删除数据库:DROP DATABASE (IF EXISTS) mydb1
》修改数据库编码:ALTER DATABASE mydb1 CHARACTER SET utf8
(2)数据类型(列类型)
》int:整型
》double:浮点型,注:double(5,2)表示最多5位,其中必须有2位小数
》decimal:浮点型,在表单钱方面使用该类型,防止精度缺失问题
》char:固定长度字符串类型 char(255),数据长度最长为255,数据长度不足时补足255
》varchar:可变长度字符串类型:varchar(65535), wangcb
》text(clob):字符串类型,clob是个方言,标准里面没有,text有细分的类型,使用时注意查看
》blob:字节类型,表示二进制
》data:日期类型,格式为yyyy-mm-dd
》time:时间类型,格式为hh:mm:ss
》timestamp:时间戳类型 同时具有日期类型和时间类型,
(3)表
》创建表:
CREATE TABLE [IF NOT EXISTS] 表名(
列名 列类型,
列名 列类型
); 注意最后要添加分号
》查看当前数据库中所有表名称:SHOW TABLES;
》查看指定表的创建语句:SHOW CREATE TABLE 表名;
》查看表结果:DESC 表名
》删除表:DROP TABLE 表名
》修改表:前缀 ALTER TABLE 表名
>添加列
ALTER TABLE 表名 ADD (
列名 列类型,
列名 列类型
)
>修改列类型
ALTER TABLE 表名 MODIFY 列名 列类型
>修改类名
ALTER TABLE 表名 CHANGE 原列名 新列名 列类型
>删除列
ALTER TABLE 表名 DROP 列名
>修改表名称
ALTER TABLE 原表名 RENAME TO 新表名
====2020-02-04学习记录====
4、DML
(1)插入数据
》INSERT INTO 表名(列1,列2,···) VALUES(列值1,列值2,···)
>在表名后面给出插入的列名,其他没有指定的列 等同于插入null值
>在values后给出的列值,值的顺序和个数必须和前面指定的列对应
》INSERT INTO 表名 VALUES(列值1,列值2,···)
>当没有给出插入 的列时表示插入所有的列
>值的个数步需 和该表中的列数相等,同时顺序和创建时的顺序相同
(2)修改数据
》UPDATE 表名 SET 列1=列值1, 列2=列值2,···[WHERE 条件]
》条件为可选:必须时一个Boolean类型的值或者表达式。
(3)删除数据
》DELETE FROM 表名 (WHERE 条件)
》TRUNCATE TABLE 表名: 包含两个步骤,先删除表,然后在创建表,该操作最终导致数据无法回滚
5、DCL
一个项目创建一个用户,一个项目对应只有一个数据库,这个用户只对这个数据库有权限,其他数据库无法进行修改
(1)创建用户
》CREATE USER 用户名@ip地址 IDENTIFIED BY ‘密码’
>用户只能在指定的ip地址上登陆
》CREATE USER 用户名@‘%’ IDENTIFIED BY ‘密码’
>用户可以在任意ip地址上登陆
(2)给用户权限
》GRANT 权限1,······权限ON 数据库.* TO 用户名@IP地址,一般使用root用户进行权限授权,grant all on mydb.* to 张zhangsan@localhost
>权限、用户、数据库
>给用户分配指定的权限:GTANT CREATE ALTER DROP INSERT UPDATE DELETE SELETE
(3)撤销授权
》REVOKE 权限1,权限2···权限n ON 数据库.* FROM 用户名@ip地址
(4)查看权限
》SHOW GRANTS FOR 用户名@IP地址
(5)删除权限
》DROP USER 用户名@IP地址
6、DQL
(1)基础查询 单表查询
》SELECT * FROM tableName 查询所有列
》SELECT 列1,列2 FROM tableName 查询指定列
》SELECT DISTINCT * FROM tableName 去掉完全重复的列
或者SELECT DISTINCT 列1 FROM tableName 会针对这一列进行去重操作
》列运算
>SELECT 列1*1.5 FROM tableName 当然也可以连个列 相加减乘除,当给的值无法进行转换为整数的时候就当作0来处理,所以不能用来处理字符串,字符串相加通过下列方式:SELECT CONCAT(列1,列2) FROM tableName。
>SELECT 列1+IFNULL(列2,0) FROM tableName 处理null值任何东西和null相加结果是null
>SELECT 列1 as 姓名,列2 as 年龄 FROM tableName 起别名,其中as可以省略
(2)条件查询
》SELECT语句查询的过程中也可以通过WHERE子句来控制记录
>SELECT name FROM stu WHEERE age >10 and age <20
> SELECT name FROM stu WHEERE age IN (‘10’, ‘20’)
(3)模糊查询
》SELECT * FROM stu WHERE name like ‘张_或___或张%’:一个下划线匹配一个字符,百分号是匹配0-n各字符
(4)排序
》升序:SELECT * FROM stu ORDER BY name 【ASC】
》降序:SELECT * FROM stu ORDER BY name DESC
》多列进行排序:SELECT * FROM stu ORDER BY name ASC, age DESC
(5)聚合函数
》COUNT: SELECT COUNT(【*,类名,列位置例如1】) FROM stu 记录所有不为null的数目
》MAX:SELECT MAX(age) FROM stu
》MIN: SELECT MIN(age) FROM stu
》SUM: SELECT SUM(age) FROM stu
》AVE: SELECT AVE(age) FROM stu
(6)分组查询
》SELECT job,COUNT(*) ,MAX(sal) FROM emp GROUP BY job