Loading... **前言** -- **SQL语句有以下几个类别:** - **DDL**:Data Defination Language(数据定义语言) > CREATE:创建 > DROP:删除 > ALTER:修改 - **DML**:Data Manipulation Language(数据操作语言) > INSERT:插入 > DELETE:删除 > UPDATE:更新 > SELECT:查看 - **DCL**:Data Command Language(数据指令语言、权限语言) > GRANT: > REVOKE: **数据库的数据类型:** **字符型** > 定长字符型:CHAR(#), BINARY(#) <--第二个是区分大小写的定长字符型 > 变长字符型:VARCHAR(#), VARBINARY(#) <--第二个是区分大小写的定长字符型 > > 对象存储: >TEXT:不区分大小写 >BLOB:区分字符大小写 **数值型** > **精确数值型**: >整型:int,详细见下表(来源于网络,如有侵权联系博主) ![mysql整数类型.png][1] > **十进制**:decimal > **日期时间型:** > 日期:DATE > 时间:TIME > 日期时间:DATETIME > 时间戳:TIMESTAMP > 年份:YEAR(2), YEAY(4) > **近似数值型:** > 单精度浮点型: float > 双精度浮点型: double **修饰符** 所有类型适用: > NOT NULL:非空约束 > DEFAULT VALUE:设定默认值 > PRIMARY KEY:定义主键 > UNIQUE KEY:定义唯一键 数值类型适用: > UNSIGNED:无符号整数 > AUTO_INCREMENT:自增长 字段修饰符: > 待补充 ---------- 数据库 === 新建数据库 ----- > CREATE DATABASE|SCHEMA [IF NOT EXISTS] DB_NAME; **示例:新建数据库testdb,如果不存在才新建** mysql> CREATE DATABASE IF NOT EXISTS testdb; mysql> CREATE DATABASE testdb character set = 'utf8'; #表示在建立数据库testdb的同时,指定字符集为uft8; <div class="tip inlineBlock warning"> 查看数据库支持的字符集:SHOW CHARACTER SET;<br><br>查看数据库支持的排序方式:SHOW COLLATION; </div> > 设置字符集: > CHARACTER SET = '字符集' > 设置排序规则: > COLLATE 'collate naem' 删除数据库 ----- > DROP DATABASES|SCHEMA [IF NOT EXISTS] 'DB_NAME'; **示例:**删除数据库"testdb" mysql> DROP DATABASE testdb; <div class="tip inlineBlock error"> 此操作是不可逆转的,一旦删除无法恢复 </div> 数据表 === 新建数据表 ----- > CREATE TABLE [IF EXISTS] 'table_name' (col1 type1, col2 type2,...) > > col type1 定义类型 > PRIMARY KEY(col1,col2...) 定义主键 > INDEX(col1,...) 为字段添加索引 > UNIQUE KEY(col1,..) 定义唯一键 **表选项** > ENGINE [=] engine_name 设置存储引擎 > ROW_FORMAT [=] {DEFAULT|DYNAMIC|FIXED|COMPRESSED|REDUNDANT|COMPACT} 指明行格式 > SHOW ENGINES 查看支持的存储引擎 **示例:**新建数据表tbl1,有三个字段,分别是 id name age mysql> CREATE TABLE tab1 (id INT NOT NULL,name CHAR(10) NOT NULL,age TINYINT); #新建表的同时把id设置为主键 mysql> CREATE TABLE tab1 (id INT NOT NULL **PRIMARY KEY**,name CHAR(10) NOT NULL,age TINYINT); 删除表 --- > DROP TABLE tab_name; <div class="tip inlineBlock error"> 注意,此操作是不可逆的 数据库的删除操作和Linux相似,不存在回收站这一说法,使用DROP时应当慎之又慎 </div> 数据操作命令 ====== > SELECT > UPDATE > INSERT > DELETE INSERT语句 -------- > INSERT [INTO] tal_name [(col_name,...)] {VALUES|VALUE} (val1,...),(...),... **示例:**表中的字段为id,name,age,添加两条记录 mysql> INSRET INTO tab1 VALUES (1,'张三',28),(2,'李四',20); ![insret.png][2] mysql> INSRET INTO tab1 (id,name) VALUES (3,'李华'),(4,'Tom'); #方式二 ![INSERT1.png][3] SELECT语句 -------- > SELECT col1,col2,... FROM tal_name [WHERE clause] [ORDER BY 'co_name'] [LIMIT [m,]n]; <div class="tip inlineBlock share"> ORDER BY 'co_name' DESC<br>表示降序,默认是升序<br>LIMIT 偏移<br>字段表示法:<br>*:所有字段;<br>:字段别名,col1 AS alias1;<br>如:select id as uid from 表名;列的id会显示为uid </div> **示例:**查找id号大于3的用户 mysql> SELECT * FROM tab1 WHERE id>3; ![SELECT1.png][4] **示例:查找name为L开头的用户** mysql> SELECT * FROM tab1 WHERE name LIKE 'L%'; ![SELECT2.png][5] UPDATE语句 -------- > UPDATE tbl_name SET col1_new_val1,col2=new_val2,... [WHERE clause] [ORDEY BY 'clo_name' [DESC] ] [LIMIT [m,]n] **示例:**更新Tom的年龄为50 mysql> UPDATE tab1 SET age=50 WHERE name='Tom'; ![UPDATE.png][6] DELETE语句 -------- > DELETE FROM tal_name [HWERE clause] [LIMIT [m,]n] **示例:**删除Tom用户 mysql> DELETE FROM tab1 WHERE name='Tom'; ![DELETE.png][7] <div class="tip inlineBlock error"> 不使用WHERE将会删除表中的所有数据! </div> ---------- ## 创建用户账号 ## > CREATE USER 'user'@'host' [IDENTIFIED BY 'password']; **示例:**创建一个test用户,允许任何ip登录,密码为123456 mysql> CREATE USER 'test'@'%' IDENTIFIED BY '123456'; ## 删除用户 ## > DROP USER 'user'@'host'; **示例:**删除test用户 mysql> DROP USER 'test'@'%'; ## 用户授权 ## > GRANT priv_type,... ON [object_type] db_name.tb_name TO 'user'@'host' [INDETIFIED BY 'password']; <div class="tip inlineBlock warning"> priv_type: ALL(表示所有权限)<br>db_name.tb_name:<br> \*.\*: 表示所有库的所有表<br> db_name.*: 指定数据库的所有表<br>db_name.tb_name: 指定库的指定表<br> db_name.routine_name: 指定库的存储例程 </div> **示例:**给test用户testdb库所有权限 mysql> GRANT all ON testdb.* TO 'test'@'%'; **示例:**只给test用户所有表的SELECT权限 mysql> GRANT SELECT ON testdb.* TO 'test'@'%'; ## 查看当前用户权限 ## > SHOW GRANTS FOR 'user'@'host'; 查看指定用户的权限 > SHOW GRANTS FOR CURRENT_USER; 查看当前用户的权限 ## 撤销权限 ## > REVOKE priv_type,... ON db_name.tb_name FROM 'user'@'host'; **示例:**撤销test用户在testdb所有表的DELETE权限 mysql> REVOKE DELETE ON testdb.* FROM 'test'@'%'; <div class="tip inlineBlock warning"> 每次修改授权数据库都会自己刷新权限;一般操作用户授权,最好手动刷新一下授权,让系统重读授权信息;<br> FLUSH PRIVILEGES </div> ---------- <center>END</center> [1]: https://blog.beijixs.cn/usr/uploads/2019/09/2666237385.png [2]: https://blog.beijixs.cn/usr/uploads/2019/09/2938650104.png [3]: https://blog.beijixs.cn/usr/uploads/2019/09/3985204834.png [4]: https://blog.beijixs.cn/usr/uploads/2019/09/2809781131.png [5]: https://blog.beijixs.cn/usr/uploads/2019/09/2715362243.png [6]: https://blog.beijixs.cn/usr/uploads/2019/09/156706455.png [7]: https://blog.beijixs.cn/usr/uploads/2019/09/2271416195.png 最后修改:2019 年 09 月 30 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 0 如果觉得我的文章对你有用,请随意赞赏