DBMS的功能:
数据管理独立性;
有效地完成数据存取
数据完整性和安全性
数据集中管理
并发存储与故障恢复
减少应用程序开发周期
MySQL:
-h 127.0.0.1 localhost 客户端和服务端在同一台机器,连接方式:
linux: socket 套接字文件 本机
WINDOWS:memory 共享内存
mysql用户名中定义了该用户可以从哪里登录MYSQL服务器
Mysql客户端:
交互式模式
批处理模式 执行MYSQL脚本
交互式模式中的命令类别:
客户端命令 客户端命令不需要以分号结尾
mysql常用客户端命令如下:
如果想获取客户端命令的帮助信息则:mysql> help
mysql> quit或\q
#表示退出mysql
mysql> go或\g
#表示无论语句的结束符是什么都把语句送到服务器端执行,是在当被修改默认结束符后又不知道的情况下使用
例如:
mysql>
select
database()\g
#显示当前所在的数据库
mysql> use或\u 数据库名称
#表示设定默认数据库
例如:
mysql> \u
test
#表示使用test这个数据库
mysql> ego或\G
#表示sql命令取回的数据纵向显示
例如:
mysql>
select
* from mysql.user\G
#表示读取mysql库中user表中的所有数据,如果不用\G,那数据可读性不高
mysql> system或\!
#表示在不退出mysql客户端程序下执行shell命令,这个有点类似在vim中执行shell命令
mysql> status或\s
#表示获取当前mysql的状态信息
mysql> delimiter或\d
#表示更换语句结束符,也就是可把默认的分号结束符号更换成其他的符号
服务器端命令 必须使用语句结束符,默认为分号“;”
常用服务器端命令:
mysql>
select
version();
#表示显示mysql数据库的版本号
mysql> show databases;
#显示mysql中有哪些数据库
mysql> show databases like
't%'
;
#显示以字母“t”开头的数据库
mysql> show variables;
#显示服务器参数变量,一样可以使用‘‘like’’这样的子句来做模糊查找
mysql> show variables like
'datadir%'
;
mysql> show status;
#显示服务器状态变量
mysql> help create table
#获取创建表支持的数据类型
mysql> show character
set
;
#显示mysql所支持的字符集
mysql> show collation;
#显示排序规则
mysql> show processlist;
#显示服务器当前所有mysql线程列表
mysql> show indexes from 表名;
#显示表中的索引信息
mysql> show table status\G
#查看当前默认数据库中表状态,有“\G”结尾的不要加分号
mysql> show table status [from |
in
] 数据库\G
#查看指定数据库中的表状态
MySQL默认的三个数据库:
information_schema 把mysql运行过程中产生的数据保存在内存中的数据库。(保证兼容)
mysql 存放数据库元数据
test 测试时使用
关系型数据库对象:
库
表
索引
视图
约束
存储过程
存储函数
触发器
游标
用户
权限
事物
表:
行:row
列: field,column
表:实体
字段名称:数据类型,类型修饰符(限制)
字符 CHAR(n) VARCHAR(n)默认不区分大小写 最多256个字符
BINARY(n) VARBINARY(n)区分大小写 65553
TEXT(n)
BLOB(n)
表示众多字符的字符类型:
text,blob这两种是表示众多字符型,text不区分大小写,blob区分大小写。这两种类型字符还有相应的变体
text:tinytext,text,mediumtext,longtext 存储的内容大小依次增大
blob:tinyblob,blob,mediumblob,longblob 存储的内容大小依次增大
这种类型的实际数据不是存放在表中的,而是存放在数据库外围的,表中只是存放了指向相应对象的指针。
常用修饰符:not null,default '默认值 '
数值 修饰符:unsigned (无符号)
精确数值
整型 TINYINT 1个字节 SMALLINT INT BIGINT
十进制 DECIMAL
近似数值
浮点型
FLOAT
DOUBLE
日期
DATE
TIME
DATETIME
STAMP
布尔
mysql命令不区分大小写,但一般大写
DDL:数据定义语言(结构)
CREATE #在数据库中创建对象
ALTER #修改数据结构
DROP #删除对象
RENAME #重命名对象
DML:数据操作的语言 (内容)
INSERT #向一个表格中插入数据
UPDATE #更新一个表格中的已有数据
DELETE #删除表格中的数据
DCL:数据控制语言(权限)
GRANT #赋予一个用户对数据库或数据表格等制定权限
REVOKE #删除一个用户对数据库或数据表格等制定权限
DDL:
创建数据库:
CREATE DATABASE db_name;
CREATE DATABASE IF NOT EXISTS db_name;
删除数据库:DROP DATABASE db_name;
创建表:
CREATE TABLE tb_name(列1 数据类型 修饰符,列2 数据类型 修饰符,..列n 数据类型 修饰符);
查看库中的表;SHOW TABLES FROM db_name;
查看表的结构:DESC tables_name;
删除表:DROP TABLE tables_name;
修改表:ALTER TABLE tb_name MODIFY #改变字段属性
CHANGE #改变字段名称
ADD
DROP
例:ALTER TABLE students ADD course VARCHAR(20) NOT NULL;
ALTER TABLE students CHANGE course Course VARCHAR(10) AFTER Name;
DML:
INSERT INTO tb_name (col1,col2,...) VALUES|VALUE('STRING',NUM,...);
例:INSERT INTO students (Name,Age) VALUE ('LingHuChong',25),('Xiaolongnv',18);
例:INSERT INTO students VALUES ('Xiaoxiangzi', 'Hamagong', '55');
UPDATE tb_name SET column=value WHERE CONDITION;
例:UPDATE students SET Course='pixiejianfa';
UPDATE students SET Course='kuifabaodian' WHERE Name='Xiaoxiangzi';
#WHERE指定条件
选择:指定以某字段做为搜索码,与某值做逻辑比较,筛选符合条件的行。
投影:筛选符合条件的列
例: SELECT Name,Age From students WHERE Course='pixiejianf';
DELETE FROM tb_name WHERE CONDITION;#删除的是行
例:DELETE FROM students WHERE Course='kuifabaodi';
SELECT col1,col2 FROM tb_name WHERE CONDITION;
*:所有字段
WHERE:没有条件表示所有行
DCL:
CREATE USER 'USERNAME'@'HOST' IDENTIFIED BY 'PASSWORD'; 创建用户
DROP USER 'USERNAME'@'HOST'; 删除用户
HOST:
IP
HOSTNAME
NETWORK
通配符 _:匹配任意单个字符,172.16.0 _
%:匹配任意字符
例:jerry@'%'
GRANT pri1,pri2,... ON db_name.tb_name TO 'username'@'host' [IDENTIFIED BY 'PASSWORD'];
REVOKE pri1,pri2,... ON db_name.tb_name TO 'username'@'host';
SHOW GRANTS FOR 'username'@'host';查看用户权限
GRANT ALL PRIVILEGES ON test.* TO 'xiejun'@'%'; 赋予用户xiejun从任何主机登录并对数据库test下所有表具有全部权限