1.关闭开启
开启命令:net start mysql56
关闭命令:net stop mysql56
进入mysql:mysql -uroot -p*****
进入mysql后查看编码信息:\s或status
2.数据库操作
命令:select version();
命令:\h 帮助
命令:\T 开启输出日志
命令:\t 结束输出日志
命令: create database if not exists maizi1; 产生数据库maizi1
命令:show warnings; 显示产生的警告信息
命令:show databases; 或show schemas; 显示当前数据库
命令:create database if not exists maizi3 default character set ='GBK' 选择新建数据库的编码信息
命令:SHOW CREATE DATABASE MAIZI3 显示数据库的编码信息
命令: alter database maizi3 default character set utf8; 修改已有数据库的编码方式
命令:use maizi1 打开maizi1数据库
命令:select database(); 得到当前打开的数据库名称
命令:drop database maizi3; 删除maizi3数据库
命令:drop database if exists maizi3;
3.数据表的相关操作
3.1数据库中的数据类型
整数类型
浮点类型
字符串类型
日期时间类型
3.2存储引擎
命令:show engines; 显示存储引擎
命令:show variables like 'have%'; 显示支持存储引擎的详细信息
命令:show variables like 'storage_engine'; 显示默认的存储引擎
默认的存储引擎:InnoDB;MyISAM;MEMORY
InnoDB:使用较多,支持事务处理、并发控制、外件,表结构存储在fim文件,缺点是读写效率低占用空间大
MySIAM:数据分成三个文件的结构,支持三种存储格式,插入速度快,占用空间低,不支持事务
MEMORY:很少用的到,速度快,安全性低,不能建立太大的表,生命周期短临时使用
命令: show tables;显示有几张表
3.3 完整性约束条件
-- 创建学员表(USER)
-- 编号 id
-- 姓名 NAME
-- 年龄 age
-- 性别 sex
-- 邮箱 email
-- 地址 addr
-- 生日 birth
-- 薪水 salary
-- 电话 tel
-- 是否结婚 married
# 注意mysql5.5之前的版本:当需要输入中文时,需临时转换客户端的编码方式(SET NAMES GBK)
# 字段注释 通过COMMENT给字段添加注释
CREATE TABLE IF NOT EXISTS `user`(
id SMALLINT,
username VARCHAR(20),
age TINYINT,
sex ENUM('男','女','保密'),
email VARCHAR(50),
addr VARCHAR(200),
birth YEAR,
salary FLOAT(8,2),
tel INT,
married TINYINT(1) COMMENT '0代表未结婚,非0代表结婚'
)ENGINE=INNODB CHARSET=UTF8;
-- 创建课程表course
-- 编号did
-- 课程名称 courseName
-- 课程描述courseDesc
CREATE TABLE IF not EXISTS course(
cid TINYINT,
courseName VARCHAR(50),
courseDesc VARCHAR(200)
);
CREATE TABLE if not EXISTS cms_cate(
id TINYINT,
catName VARCHAR(50),
catDesc VARCHAR(200)
)ENGINE =MyISAM CHARSET=UTF8;
-- 创建新闻表cms_news
-- 编号、新闻标题、新闻内容、新闻发布时间、点击量、是否置顶、新闻所属分类、发布人
CREATE TABLE IF NOT EXISTS cms_news(
id INT,
title VARCHAR(50),
content TEXT,
pubTime INT,
clickNum INT,
isTop TINYINT(1) COMMENT '0代表不置顶,1代表置顶'
);
-- 查看cms_news表的表结构
DESC cms_news;
DESCRIBE cms_news;
SHOW COLUMNS FROM cms_news;
-- 测试整型
CREATE TABLE test1(
num1 TINYINT,
num2 SMALLINT,
num3 MEDIUMINT,
num4 INT,
num5 BIGINT
);
-- 向表中插入记录INSERT tbl_name VALUE|VALUES(值,。。。);
INSERT test1 VALUES(-128,-32768,-8388608,-2147483648,-9223372036854775808);
-- 查询表中的所有记录select * from tbl_name;
select * from test1;
--无符号UNSIGNED
CREATE TABLE test2(
num1 TINYINT UNSIGNED,
num2 TINYINT
);
INSERT test2 VALUES(0,-12);
-- 零填充ZEROFILL
CREATE TABLE test3(
num1 TINYINT ZEROFILL,
num2 SMALLINT ZEROFILL,
num3 MEDIUMINT ZEROFILL,
num4 INT ZEROFILL,
num5 BIGINT ZEROFILL
);
INSERT test3 VALUES(1,1,1,1,1);
-- 测试浮点类型
CREATE TABLE test4(
num1 FLOAT(6,2),
num2 DOUBLE(6,2),
num3 DECIMAL(6,2)
);
# 定点数DECIMAL存储精度较高
INSERT test4 VALUES(3.2495,3.2495,3.2495); #插入数据会进行四舍五入
-- 测试CHAR和VARCHAR
CREATE TABLE IF NOT EXISTS test5(
str1 CHAR(5),
str2 VARCHAR(5)
);
INSERT test5 VALUES('1','1');
INSERT test5 VALUES('12345','12345');
INSERT test5 VALUES('123456','123456');
INSERT test5 VALUES('1 ','1 ');
SELECT CONCAT(str1,'-'),CONCAT(str2,'-') FROM test5; #字符串开始的空格都会被留下,char末尾的空格会省略,varchar末尾的空格会留下
INSERT test5 VALUES('啊','啊');
-- 测试枚举类型
CREATE TABLE IF NOT EXISTS test6(
sex ENUM('男','女','保密')
);
INSERT test6 VALUES('男');
INSERT test6 VALUES('女');
INSERT test6 VALUES('保密');
INSERT test6 VALUES(NULL);
-- 测试集合类型
CREATE TABLE IF NOT EXISTS test7(
fav SET('A','B','C','D')
);
INSERT test7 VALUES('A,C,D');
INSERT test7 VALUES('D,B,A');
INSERT test7 VALUES(3); # 选定前两个项
-- 测试YEAR类型
CREATE TABLE IF NOT EXISTS test8(
bitrh YEAR
);
INSERT test8 VALUES(1901); # 1901写为‘1901’ 也是可以的, 00-69被转换为2000-2069,70-99转为1970-1999
INSERT test8 VALUES(2155);
-- 测试 TIME
CREATE TABLE IF NOT EXISTS test9(
bitrh TIME
);
INSERT test9 VALUES('1 12:12:12'); # 36:12:12
INSERT test9 VALUES('11:11'); #11:11:00
INSERT test9 VALUES('1234'); #00:12:34
INSERT test9 VALUES('12'); #00:00:12
-- 测试DATE
CREATE TABLE IF NOT EXISTS test10(
date1 DATE
);
INSERT test10 VALUES('12-6-7'); #12年6月7日
INSERT test10 VALUES('12/6/7'); #12年6月7日
INSERT test10 VALUES('120607'); #12年6月7日
-- 测试主键
CREATE TABLE IF NOT EXISTS user1(
id INT PRIMARY KEY, #设置主键可以用PRIMARY KEY也可以用KEY
username VARCHAR(20)
);
INSERT user1 VALUES(1,'king');
INSERT user1 VALUES(13,'Tom');
-- 测试复合主键
CREATE TABLE if NOT EXISTS user2(
id INT,
username VARCHAR(20),
card CHAR(18),
PRIMARY KEY(id,card)
);
INSERT user2 VALUES(1,'king','1111');
INSERT user2 VALUES(1,'Tom','1112'); # 复合主键只有两个主键值完全相同才会报错
-- 常用命令
DESC user2; #查看表结构
SHOW CREATE TABLE user1; #查看创建表的标的定义
SELECT * FROM user2; #显示tab_name内容
SELECT * FROM user1 WHERE id=1; #显示id为1的信息
SELECT LENGTH('啊') #显示‘啊’的长度