[关闭]
@wuxin1994 2019-03-15T11:28:07.000000Z 字数 3252 阅读 655

数据库-MySQL入门

数据库


此处输入图片的描述
SQL语法总结。

概念

SQL:Structure Query Langeage 结构化查询语言

DDL:数据定义,定义数据库、数据表结构,create,drop,alter,show
DML:数据操纵,用来操作数据,insert,update,delete
DCL:数据控制,访问权限和安全,grant
DQL:数据查询,select,from,where...

(0)用户操作

用户权限相关数据保存在mysql数据库的user表中,所以也可以直接对其进行操作

创建用户

  1. create user '用户名'@'IP地址' identified by '密码';

删除用户

  1. drop user '用户名'@'IP地址';

修改用户

  1. rename user '用户名'@'IP地址'; to '新用户名'@'IP地址';;

修改密码

  1. set password for '用户名'@'IP地址' = Password('新密码')

用户权限设置

  1. --授权
  2. grant all privileges on db1.tb1 TO '用户名'@'IP'
  3. grant select on db1.* TO '用户名'@'IP'
  4. grant select,insert on *.* TO '用户名'@'IP'
  5. --取消
  6. revoke select on db1.tb1 from '用户名'@'IP'

(1)数据库操作

安装教程

  1. 初始化后第一次使用数据库要修改密码:
  2. ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';
  3. exit;(退出mysql

创建数据库

  1. create database name;
  2. create database name character set utf8;
  3. create database name character set utf8 collate utf8_bin;

查看数据库

  1. --查看所有数据库
  2. show databases;
  3. --查看数据库的定义
  4. show create database name;

修改数据库

  1. --修改字符集
  2. alter database name character set 字符集;

删除数据库

  1. drop database name;

切换数据库

  1. use name;

查看当前数据库

  1. select database();

(2)表的操作

create, drop, alter, show

创建

  1. create tabel tabel_name(
  2. 列名 列的类型(长度) 约束,
  3. );
  4. --创建表的索引
  5. CREATE INDEX index_name
  6. ON table_name (column_name DESC)

数据类型有:

约束有:

查看

  1. --查看所有表
  2. show tables;
  3. --查看指定表
  4. show create table name;
  5. --查看表结构
  6. desc name;

修改表

  1. --修改表名字
  2. rename table table_name to new_name;
  3. --添加列col
  4. alter table table_name add col_name int not null;
  5. --修改列
  6. alter table table_name modify 属性 char(3);
  7. -- 修改列名
  8. alter table table_name change old_name new_name int notnull;
  9. --删除列
  10. alter table table_name drop col_name;

(3)表数据的CRUD操作

insert, delete, update, select

插入数据

  1. insert into table_name values(value1,value2,value3);
  2. --当只插入部分字段时,列名不能省略
  3. insert into table_name(col1,col2) values(value1,value2);
  4. --批量插入
  5. insert into table_name values
  6. (value1,value2,value3),
  7. (value4,value5,value6),
  8. (value7,value8,value9);

删除记录

  1. delete from table_name [where];
  2. --同时,truncate也可以删除表,但是和delete有区别。
  3. //delete:DML 一条一条删除数据;(适合删除数据少)
  4. truncate table 表名;
  5. //truncate:DDL 先删除表再重建表。(适合删除数据多)

修改记录

  1. update table_name set col_name = new_value[where ] ;

查询

  1. distinct 去重
  2. AND & OR 条件
  3. Order by (Desc & Asc) 排序
  4. Top 查询个数
  5. Like+通配符 模糊查询
  6. In (123) 范围匹配
  7. Aliases,即as 别名,可省略
  8. Between
  9. Union:合并两个或多个 SELECT 语句的结果集。Union ALL允许重复。
  10. Select into:从一个表中选取数据,然后把数据插入另一个表中。
  11. View:基于 SQL 语句的结果集的可视化的表。
  12. Nulls
  13. isnull()
  14. ```sql
  15. [**Join:引用多个表**][1]
  16. >JOIN: 如果表中有至少一个匹配,则返回行
  17. <div class="md-section-divider"></div>
  18. ```sql
  19. select column_name(s)
  20. from table 1
  21. INNER JOIN table 2
  22. ON
  23. table 1.column_name=table 2.column_name

LEFT JOIN: 即使右表中没有匹配,也从左表返回所有的行

  1. select column_name(s)
  2. from table 1
  3. LEFT JOIN table 2
  4. ON table 1.column_name=table 2.column_name

RIGHT JOIN: 即使左表中没有匹配,也从右表返回所有的行.

  1. select column_name(s)
  2. from table 1
  3. RIGHT JOIN table 2
  4. ON table 1.column_name=table 2.column_name

FULL OUTER JOIN: 会从左表和右表那里返回所有的行。如果其中一个表的数据行在另一个表中没有匹配的行,那么对面的数据用NULL代替

  1. select column_name(s)
  2. from table 1
  3. FULL OUTER JOIN table 2
  4. ON table 1.column_name=table 2.column_name

(4)函数

用法:

  1. SELECT function(列) FROM

包括:

  1. 我们使用如下 SQL 语句从 "City" 列中提取前 3 个字符。
  2. SELECT MID(City,1,3) as SmallCity FROM Persons
  1. SELECT ProductName, UnitPrice, Now() as PerDate FROM Products
  1. SELECT ProductName, UnitPrice, FORMAT(Now(),'YYYY-MM-DD') as PerDate
  2. FROM Products

SQL 快速参考

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注