MySQL
SQL DML 和 DDL
可以把 SQL 分为两个部分:数据操作语言 (DML) 和 数据定义语言 (DDL)。
SQL (结构化查询语言)是用于执行查询的语法。但是 SQL 语言也包含用于更新、插入和删除记录的语法。
查询和更新指令构成了 SQL 的 DML 部分:
- SELECT - 从数据库表中获取数据
- UPDATE - 更新数据库表中的数据
- DELETE - 从数据库表中删除数据
- INSERT INTO - 向数据库表中插入数据
SQL 的数据定义语言 (DDL) 部分使我们有能力创建或删除表格。我们也可以定义索引(键),规定表之间的链接,以及施加表间的约束。
SQL 中最重要的 DDL 语句:
- CREATE DATABASE - 创建新数据库
- ALTER DATABASE - 修改数据库
- CREATE TABLE - 创建新表
- ALTER TABLE - 变更(改变)数据库表
- DROP TABLE - 删除表
- CREATE INDEX - 创建索引(搜索键)
- DROP INDEX - 删除索引
基础
连接数据库
DOS
开始-运行-cmd
mysql -h127.0.0.1 -uroot -p123456
ps: -h后面是mysqlServer所在地址,-u后面是用户名,-p后面是密码
查看数据库
show databases;
使用数据库
use 库名;
SQL:
查看表
show tables;
查看表结构
desc 表名;
建表
create table t1(
id int not null primary key,
name char(20) not null
);
语法:create table 表名称( 字段名 字段名类型 字段描述符,字段名 字段类型 字段描述符);
删除表
drop table 表名;
修改表
添加字段
alter table 表名 add(字段名 int not null);
语法:alter table 表明称 add(字段名 类型 描述符);
移除字段
alter table 表名 drop column 字段名;
语法:alter table 表名 drop colunm 字段名,drop colunm 字段名;
变更字段
alter table 表名 change 旧字段名 新字段名 int not null;
语法:alter table 表名 change 旧字段名 新字段名 新字段描述符;
插入
全字段插入
insert into 表名 values(值1, 值2,....);
个别字段插入
insert into 表名(列1, 列2,...) values(值1, 值2,...);
普通查询
单表全字段查询
select * from 表名;
单表个别字段查询
select 列1,列2... from 表名;
多表查询
SELECT
t1.order_id,
t2.*
FROM
`order` t1,
order_detail t2
语法:select 表1 . 列1 , 表2 . 列2 … from 表一,表二…;
ps:使用关键字命名时需要 ` `(~键)
条件查询
单表条件查询
select * from t1 where id=1;
语法:select 列1,列2 from 表名 where 条件;
多表条件查询
SELECT
t1.order_id,
t2.*
FROM
`order` t1,
order_detail t2
WHERE
t1.order_id = 1
语法:select 表1.列1,表2.列2 from 表1,表2 where 条件;
子查询(嵌套查询)
SELECT
*
FROM
order_detail
WHERE
order_id = (
SELECT
order_id
FROM
`order`
WHERE
order_id = 1
)
语法:select 列1,列2…… from 表名 where 条件(查询);
并查询
(SELECT order_id FROM `order`)
UNION
(SELECT order_id FROM order_detail)
交查询
SELECT
order_id
FROM
`order`
WHERE
order_id IN (
SELECT
order_id
FROM
order_detail
);
删除
delete from 表名 where 列名称 = 值;
更新
update 表名称 set 列名称 = 新值 where 列名称 = 某值
SQL SELECT DISTINCT 语句
在表中,可能会包含重复值。这并不成问题,不过,有时您也许希望仅仅列出不同(distinct)的值。
关键词 DISTINCT 用于返回唯一不同的值。
SELECT DISTINCT 列名称 FROM 表名称