创建数据库
create database 数据库名;
show databases;/*查看数据库*/
drop database 数据库名;
创建数据库表
create table 数据表名(字段1 属性,字段2 属性……);
show tables;
drop table 数据表名;
InnoDB 和 MyIsam (熟悉)
InnoDB:支持事务、外键 适用于更新、删除多的场合
MyISAM: 支持全文索引,占用空间小 适合查询多的场合
CMD窗口登录mysql
mysql –h服务器名 –u用户名 –p密码
第三章 高级查询
Limit子句:
返回指定的行
limit [位置偏移量],行数
limit 5 前五行
limit 5,5 从第6行开始,返回5行
表连接:
inner join 内连 (又叫做等值连接) 返回两表都包含,并且符合条件的数据
left join 左连接 返回符合条件的数据+左表中的其他数据。
right join 右连接 返回符合条件的数据+右表中的其他数据。
子查询:
单行子查询:select * from student where studentid = (select student from exam where score = (select max(score) from exam));
多行子查询: select * from student where studentid in (子查询语句);
IN 和 NOT IN
子查询和表连接的关系:
一般来说,表连接可以代替子查询。但子查询的效率一般来说更高一些。
因为表连接会产生笛卡尔集:m*n(了解)
函数:
NOW() 返回当前时间
SELECT <字段名列表>
FROM <表名或视图>
[WHERE <查询条件>]
[GROUP BY <分组的字段名>]
[HAVING <条件>]
[ORDER BY <排序的字段名> [ASC 或 DESC]]
ASC升序 DESC 降序
将查询结果插入新表
必须创建新表
INSERT INTO 新表(字段1,字段2……)
SELECT字段1,字段2……
FROM 原表;
不需要创建新表
CREATE TABLE 新表(SELECT 字段1,字段2
……
FROM 原表);
插入多条数据
INSERT INTO 新表(字段名列表)
VALUES(值列表1),(值列表2),……,(值列表n);
#修改表名
ALTER TABLE 旧表名 RENAME [TO] 新表名;
#添加字段
ALTER TABLE 表名 ADD 字段名 数据类型 [属性];
#修改字段
ALTER TABLE 表名 CHANGE 原字段名 新字段名 数据类型 [属性];
#删除字段
ALTER TABLE 表名 DROP 字段名;
EXISTS关键字
在创建表和删除表
create table if not exists 表名(表字段……);
drop table if exists 表名;
子查询有返回行:返回TRUE
select * from 表名 where exists(子查询);
子查询无返回行:返回FALSE
select * from 表名 where not exists(子查询);
什么是事务
事务(TRANSACTION)是作为单个逻辑工作单元执行的一系列操作
多个操作作为一个整体向系统提交,要么都执行、要么都不执行
事务是一个不可分割的工作逻辑单元
事务的四个特性(重要)
原子性
一致性
隔离性
持久性
事务的操作
begin 或者 start transaction 【开始事务】
commit 【提交】
rollback 【回滚】
视图
视图是一张虚拟的表,本质是一个查询语句。
视图中不包含物理数据,视图的查询结果全部来自于对应的数据库表。
创建视图
CREATE VIEW view_name
AS
SELECT 语句;
删除视图
DROP VIEW [IF EXISTS] view_name;
索引的作用:
大大提高数据库的检索速度
改善数据库性能
创建索引
CREATE INDEX 索引名
ON 表名 (列1,列2);