创建数据库及数据库表
数据库分类
MySQL使用
MySql的安装与访问(请查看上一天)
1.启动mysql服务器
启动 mysql:输入: net start mysql 服务名 ( 例如 :mysql57,mysql80)停止 mysql:输入 : net stop mysql 服务名 ( 例如 :mysql57,mysql80)
2.连接mysql服务器
mysql -u 用户名 -p 密码例如 :mysql -uroot -p123456
3.基于客户端工具连接MySql

创建用户和授权
创建用户
create user '用户名'@'主机地址' identified by '密码'
create user 'myuser'@'localhost' identified by '123456'
mysql -u tiger -p
Enter password: ******
授权
#mysql5 授权
grant 权限种类 on 数据库名.表名 to '用户名'@'主机地址' identified by '密码'
#mysql8 授权
grant 权限种类 on 数据库名.表名 to '用户名'@'主机地址' with grant option;
实例:
#mysql5
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY '123456' WIT
#mysql8
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION;
flush privileges; 修改后执行此句命令,刷新权限。
# 让别人使用指定账号能访问自己的数据库cmd 命令框登录进入 mysql 之后;1. 先执行use mysql;2. 再执行update user set host = '%' where user = ' 用户名 ' and host=' 主机地址 ';// 执行此句3. 执行刷新语句 刷新权限flush privileges;# 要查看数据库的账号信息可以执行如下 sqlselect host,user from user;
数据库的操作
数据库的常用操作
show databases; 显示当前连接下的所有数据库;use 数据库名;使用数据库show tables; 显示该数据库下的所有表desc 表名 ; 显示表结构# 查看表结构desc goods# 查看建表代码show create TABLE goods
创建数据库
CREATE DATABASE [IF NOT EXISTS] <数据库名>
[[ DEFAULT ] CHARACTER SET < 字符集名 > ][[DEFAULT] COLLATE <校对规则名>];
实例:
CREATE DATABASE IF NOT EXISTS test_db_charDEFAULT CHARACTER SET utf8mb4DEFAULT COLLATE utf8mb4_general_ci;# 简写create database test_db;
CREATE TABLE [IF NOT EXISTS] ` 表名 `(` 列名 1` 类型 [ 约束 ],` 列名 2` 类型 [ 约束 ],...` 列名 n` 类型 [ 约束 ])[ENGINE= 存储引擎 DEFAULT CHARSET= 字符编码 ];
#创建表
create table testtab(id int,name varchar(10),sex char(1));# 查询表select * from 表名 ;
查看当前mysql默认引擎:
show variables like '%engine%';
查看mysql支持哪些引擎:
show engines;
set default_storage_engine=innodb;
修改全局会话默认存储引擎(重启后失效),对所有会话有效
set global default_storage_engine=innodb;
导入和导出(备份)
导出(备份):该命令是直接在cmd窗口命令行执行,不要进入到mysql。
mysqldump -uroot -p --databases 数据库命名 [表名,...]>路径
导入(还原):
mysql -uroot -p [ 数据库名 ]< 路径
数据类型
整型
MySQL数据类型
|
含义(有符号)
|
tinyint(m)
|
1个字节 范围(-128~127)
|
smallint(m)
|
2个字节 范围(-32768~32767)
|
mediumint(m)
|
3个字节 范围(-8388608~8388607)
|
int(m) 用它
|
4个字节 范围(-2147483648~2147483647)
|
bigint(m)
|
8个字节 范围(+-9.22*10的18次方)
|
浮点型(float 和 double):
float(7,2) : 12345.45
MySQL数据类型
|
含义
|
float(m,d)
|
单精度浮点型 8位精度(4字节) m总个数,d小数位
|
double(m,d)
|
双精度浮点型 16位精度(8字节) m总个数,d小数位
|
定点数
字符串(char,varchar,text)
用单引号括起来的内容
MySQL数据类型
|
含义
|
char(n)
|
固定长度,最多255个字符
|
varchar(n)
使用
|
可变长度,最多65535个字符
|
tinytext
|
可变长度,最多255个字符
|
text
|
可变长度,最多65535个字符
|
mediumtext
|
可变长度,最多2的24次方-1个字符
|
longtext
|
可变长度,最多2的32次方-1个字符
|
日期时间类型
MySQL数据类型
|
范围
|
含义
|
---|---|---|
date
|
1000-01-01/9999-12-31
|
日期 '2008-12-2'
|
time
|
'-838:59:59'/'838:59:59'
|
时间'12:25:36'
|
datetime
|
1000-01-0100:00:00/9999-12-3123:59:59
|
日期时间
'2008-12-2
22:06:44'
|
timestamp
|
1970-01-01 00:00:00/2038 结束时间是第
2147483647 秒,北京时间 2038-1-19 11:14:07,格林尼
治时间 2038年1月19日 凌晨 03:14:07
|
时间戳
|
二进制类型:binary ... (文件,图片)
数据约束
约束:
1.实体完整性约束:保证数据记录的唯一性
a.主键约束(该列不能为空并且是唯一的) primary key
b.自增约束 由数据库自动生成编号序列 auto_increment (整形主键)
c.唯一键约束 unique
2.域完整性约束:限定数据范围
a.非空约束 not null b.默认值约束 default c.外键约束 foreign key
3.引用完整性约束:两表数据有引用关系,保证引用的有效性
a.外键约束 foreign key
4.用户自定义完整性:通过特定的程序规则实现
drop table student
#主表
create table classInfo
(
clsId int primary key auto_increment,
clsName varchar(20)
)
select * from classInfo;
insert into classInfo
(clsName)
values
('AAA01'),
('AAA02')
#从表
create table student
(
id int primary key auto_increment,
name varchar(20) not null,
sex char(1),
phone varchar(20) unique, #唯一约束
province varchar(20) default '河南', #默认值约束
bjId int,
foreign key (bjId) #指定当前表中的bjId作为外键
references classInfo(clsId) #指定当前表外键要关联另外一个表的哪个列
)
#查看表结构
desc student
#默认值约束
insert into student
(id,name,sex,phone)
values
(1,'张三','男','123123123')
#唯一约束
insert into student
(name,sex,phone)
values
('张三','男','123123124')
#外键约束
insert into student
(name,sex,phone,bjId)
values
('张三','男','123123125',1)
select * from student
select * from classInfo;
select * from student;