mysql -uroot -p123456 连接数据库
flush privilege 刷新权限
show databases 查看所有的数据库
use 数据库名; 切换数据库
show tables; 查看数据库中的所有表
describe 数据库名; 显示数据库所有表的信息
create database; 数据库名 创建数据库
exit 退出
– 注释 /* / */
SELECT select_list
[ INTO new_table ]
FROM table_source
[ WHERE search_condition ] --满足条件
**[ GROUP BY group_by_expression ] **–分组
**[ HAVING search_condition ] ** --过滤分组的记录满足的次要条件
**[ ORDER BY order_expression [ ASC | DESC ] ] ** --指定查询记录按一个或者多个条件排序
[LIMIT {[offset.]row_count | row_contOFFSET offset }] --指定查询的记录从哪条至哪条
------
操作数据库>操作数据库中的表>操作数据库中表的数据
1、创建数据库
CREATE DATABASE [IF NOT EXISTS] 数据库名;
2、删除数据库
DROP DATABASE [IF EXISTS] 数据库;
3、使用数据库
USE 数据库名;(如果表名或者字段名是特殊字符,需要用 ``,目的防止表名高亮)
例如 SELECT `user` FROM student
4、查看数据库
SHOW DATABASES;
学习思路:记住关键字即可
对照sqlyog可视化工具历史记录查看sql
1.数值
int 标准的整数 4字节
float 浮点数 4字节
double 浮点数 8字节
decimal 字符串形式的浮点数 金融计算时使用
2.字符串
char 字符串固定大小 0-255
varchar 可变字符串 0-65535 String
tinytext 微型文本 2^8-1
text 文本串 保存大文本
3.时间日期
java.util.Date
data YYY-MM-DD 日期格式
time HH:mm:ss 时间格式
datatime YYY-MM-DD HH:mm:ss
timestamp 时间戳 全球统一 1970.1.1到现在
year 年份
4.NULL
没有值,未知
不要使用NULL运算,结果也为NULL
Unsigned: 无符号整数 声明了该列不能声明负数
zerofill:0填充的 不足的位数,使用0填充,int(3)
非空:NULL not null 不填值时默认为null
自增: 设计唯一主键index
默认:设置默认的值!
sex :默认为男
CREATE TABLE IF NOT EXISTS 'student'(
`id` int(4) NOT NULL AUTO_INCREMENT COMMENT '学号', -- AUTO_INCREMANT自增
`name` VARCHAR(30) NOT NULL DEFAULT '匿名' COMMENT '姓名',
`pwd` VARCHAR(20) NOT NULL DEFAULT '123456' COMMENT '密码',
`sex` VARCHAR(2) NOT NULL DEFAULT '女' COMMENT '性别’,
`birthday` DATETIME DEFAULT NULL COMMENT '出生日期',
`address` VARCHAR(100) DEFAULT NULL COMMENT '地址',
PRIMARY KEY('id') --主键
)ENGINE=INNODB DEFAULT CHARSET=utf8
CREATE TABLE [IF NOT EXISTS] '表名' (
'字段名' 列类型 [属性] [索引] [注释],
)[表类型][字符集设置][注释]
SHOW CREATE DATABASE school -- 查看创建数据库语句
SHOW CREATE TABLE student -- 查看student表的定义语句
DESC student -- 显示表的结构
--关于数据库引擎
/*
INNODB 默认使用
MYISAM 早些年使用
*/
MYISAM | INNODB | |
---|---|---|
事务支持 | 不支持 | 支持 |
数据行锁定 | 不支持 | 支持 |
外键约束 | 不支持 | 支持 |
全局索引 | 支持 | 不支持 |
内存大小 | 较小 | 是MYISAM的2倍 |
MYISAM 节约空间,速度较快
INNODB 安全性高,事务的处理,多表多用户操作
物理层面:
MYISAM:有*.frm,.MYD数据文件(data),.MYI数据索引文件(index)
INNODB: 只有*.frm
偷懒技巧:
show CREATE database 数据库名
DESC 表名 --显示表的结构
修改
修改表的字段
删除表的字段
删除表
一个表的非主键与其他表的列属性相关联
一般不在数据库使用,造成数据库过多造成困扰
想使用多表数据,在程序中使用
数据库的意义:数据存储,数据管理
DML语言:数据操作语言
--插入语句(添加)
INSERT INTO 表名称 VALUES (值1, 值2,....) --值1,值2是按顺序执行
ex:INSERT INTO Persons VALUES ('Gates', 'Bill', 'Xuanwumen 10', 'Beijing')
INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值2,....) --指定表列插入
ex:INSERT INTO Persons (LastName, Address) VALUES ('Wilson', 'Champs-Elysees')
INSERT INTO table_name (列1, 列2,...) VALUES (值1),( 值2,....) --多行表列插入
ex:INSERT INTO Persons (LastName, Address) VALUES ('Wilson',`Bill`,`Beijing`),('Champs-Elysees',`nihao`,`da`)
Update命令
--语句用于修改表中的数据
UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值
ex:UPDATE Person SET FirstName = 'Fred' WHERE LastName = 'Wilson'
--若无指定条件将修改所有表
--多属性修改
UPDATE Person SET Address = 'Zhongshan 23', City = 'Nanjing'
WHERE LastName = 'Wilson'
delete命令
--DELETE 语句用于删除表中的行
DELETE FROM 表名称 WHERE 列名称 = 值
ex:DELETE FROM Person WHERE LastName = 'Wilson'
--清空表truncate
TRUNCATE `表名`
delete与truncate的区别
相同点:都可以删除数据,不会删除表结构
不同:truncate 重新设置,自增列 计数器归零,不会影响事物
delete清空后 计数器不会归零
DELETE删除的问题,重启数据库,计数器重新归零
- InnoDB 自增列会重1开始(存在内存当中,断电即失)
- MyISAM 继续从上一个自增量开始(存在文件中的,不会丢失)
所有的查询操作都用它 Select
核心语言,使用频率最高
select语法
SELECT 列名称 FROM 表名称
--函数 concat(a,b) 连接a,b的内容
SELECT CONCAT('姓名:',StudentName) AS 别名 FROM student
–为了方便查看,给列名起一个名字 AS
SELECT 列名称 AS 别字,列名称 AS 别字 FROM 表名称
去重 DISTINCT
SELECT DISTINCT `student` FROM result
作用:检索数据中符合条件的值
搜索的条件由一个或者多个表达式组成,结果为布尔值。
%(代表0到任意字符)
_ (代表一个字符)
SELECT `student` FROM `student` WHERE student LIKE '刘_'
运算符 | 语法 |
---|---|
and && | a and b a&&b |
or || | a or b a||b |
Not ! | not a !a |
模糊查询:比较运算符
运算符 | 语法 |
---|---|
IS NULL | a is null |
IS NOT NULL | a is not null |
BETWEEN | a between b and c |
Like(可以使用% 和_ 通配符) | a like b |
IN(具体的值) | a in (a1,a2,a3) |
查询地址为空
WHERE address = '' OR address IS NULL