@wuxin1994
2019-03-15T19:28:07.000000Z
字数 3252
阅读 715
数据库
SQL语法总结。
SQL:Structure Query Langeage 结构化查询语言
DDL:数据定义,定义数据库、数据表结构,create,drop,alter,show
DML:数据操纵,用来操作数据,insert,update,delete
DCL:数据控制,访问权限和安全,grant
DQL:数据查询,select,from,where...
用户权限相关数据保存在mysql数据库的user表中,所以也可以直接对其进行操作
创建用户
create user '用户名'@'IP地址' identified by '密码';
删除用户
drop user '用户名'@'IP地址';
修改用户
rename user '用户名'@'IP地址'; to '新用户名'@'IP地址';;
修改密码
set password for '用户名'@'IP地址' = Password('新密码')
用户权限设置
--授权
grant all privileges on db1.tb1 TO '用户名'@'IP'
grant select on db1.* TO '用户名'@'IP'
grant select,insert on *.* TO '用户名'@'IP'
--取消
revoke select on db1.tb1 from '用户名'@'IP'
初始化后第一次使用数据库要修改密码:
ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';
exit;(退出mysql)
创建数据库
create database name;
create database name character set utf8;
create database name character set utf8 collate utf8_bin;
查看数据库
--查看所有数据库
show databases;
--查看数据库的定义
show create database name;
修改数据库
--修改字符集
alter database name character set 字符集;
删除数据库
drop database name;
切换数据库
use name;
查看当前数据库
select database();
create, drop, alter, show
创建
create tabel tabel_name(
列名 列的类型(长度) 约束,
);
--创建表的索引
CREATE INDEX index_name
ON table_name (column_name DESC)
数据类型有:
约束有:
查看
--查看所有表
show tables;
--查看指定表
show create table name;
--查看表结构
desc name;
修改表
--修改表名字
rename table table_name to new_name;
--添加列col
alter table table_name add col_name int not null;
--修改列
alter table table_name modify 属性 char(3);
-- 修改列名
alter table table_name change old_name new_name int notnull;
--删除列
alter table table_name drop col_name;
insert, delete, update, select
插入数据
insert into table_name values(value1,value2,value3);
--当只插入部分字段时,列名不能省略
insert into table_name(col1,col2) values(value1,value2);
--批量插入
insert into table_name values
(value1,value2,value3),
(value4,value5,value6),
(value7,value8,value9);
删除记录
delete from table_name [where];
--同时,truncate也可以删除表,但是和delete有区别。
//delete:DML 一条一条删除数据;(适合删除数据少)
truncate table 表名;
//truncate:DDL 先删除表再重建表。(适合删除数据多)
修改记录
update table_name set col_name = new_value[where ] ;
查询
distinct 去重
AND & OR 条件
Order by (Desc & Asc) 排序
Top 查询个数
Like+通配符 模糊查询
In (1,2,3) 范围匹配
Aliases,即as 别名,可省略
Between
Union:合并两个或多个 SELECT 语句的结果集。Union ALL允许重复。
Select into:从一个表中选取数据,然后把数据插入另一个表中。
View:基于 SQL 语句的结果集的可视化的表。
Nulls
isnull()
```sql
[**Join:引用多个表**][1]
>JOIN: 如果表中有至少一个匹配,则返回行
<div class="md-section-divider"></div>
```sql
select column_name(s)
from table 1
INNER JOIN table 2
ON
table 1.column_name=table 2.column_name
LEFT JOIN: 即使右表中没有匹配,也从左表返回所有的行
select column_name(s)
from table 1
LEFT JOIN table 2
ON table 1.column_name=table 2.column_name
RIGHT JOIN: 即使左表中没有匹配,也从右表返回所有的行.
select column_name(s)
from table 1
RIGHT JOIN table 2
ON table 1.column_name=table 2.column_name
FULL OUTER JOIN: 会从左表和右表那里返回所有的行。如果其中一个表的数据行在另一个表中没有匹配的行,那么对面的数据用NULL代替
select column_name(s)
from table 1
FULL OUTER JOIN table 2
ON table 1.column_name=table 2.column_name
用法:
SELECT function(列) FROM 表
包括:
我们使用如下 SQL 语句从 "City" 列中提取前 3 个字符。
SELECT MID(City,1,3) as SmallCity FROM Persons
SELECT ProductName, UnitPrice, Now() as PerDate FROM Products
SELECT ProductName, UnitPrice, FORMAT(Now(),'YYYY-MM-DD') as PerDate
FROM Products