数据库就是存储数据的仓库 分为关系型数据库和非关系型数据库 常用的数据库管理软件有:甲骨文的oracle MySQL(开源、免费、跨平台) IBM的db2 微软的sql server access 下载安装MySQL: 登录 cmd :mysql -u用户名 -p(回车就是输入密文,不回车直接输入就是明文,都可以) 退出 quit;exit;-q; 不要忘记分号 连接其他主机的MySQL: mysql -h 服务器IP -P 端口号(一般默认3306)-u用户名 -p sql及其规范 sql就是针对数据库操作的指令集 不区分大小写,尽量用大写 单行注释 -- 多行注释 /* */ 打印当前时间 select now(); mysql> select now(); +---------------------+ | now() | +---------------------+ | 2019-09-18 20:26:25 | +---------------------+ 1 row in set (0.00 sec) 显示所有数据库: mysql> show databases; +--------------------+ | Database | +--------------------+ | book_msg | | dianqi_std | | information_schema | | mysql | | performance_schema | | sakila | | sys | | world | +--------------------+ 8 rows in set (0.15 sec) 删除数据库: drop database 数据库名; 创建数据库: create database dbname; C:\ProgramData\MySQL\MySQL Server 8.0\Data --所有创建的数据库都在这ProgramData是隐藏的 mysql> create database s3; --创建一个名为s3的数据库 Query OK, 1 row affected (0.02 sec) mysql> create database s3; --重复创建这个数据库 ERROR 1007 (HY000): Can‘t create database ‘s3‘; database exists --报错,已存在 mysql> create database if not exists s3; -- 加上一句话就不报错,出现警告 Query OK, 1 row affected, 1 warning (0.01 sec) mysql> show warnings; -- 查看出现的警告 +-------+------+---------------------------------------------+ | Level | Code | Message | +-------+------+---------------------------------------------+ | Note | 1007 | Can‘t create database ‘s3‘; database exists | +-------+------+---------------------------------------------+ 1 row in set (0.00 sec) 查看创建信息 show create database s3; +----------+------------------------------------------------------------------------------------------------------------------------------+ | Database | Create Database | +----------+------------------------------------------------------------------------------------------------------------------------------+ | s3 | CREATE DATABASE `s3` /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci */ /*!80016 DEFAULT ENCRYPTION=‘N‘ */ | +----------+------------------------------------------------------------------------------------------------------------------------------+ 1 row in set (0.00 sec) 在创建时指定字符编码 create database s4 character set gbk; 再查看就变为gbk编码了 mysql> show create database s4; +----------+-----------------------------------------------------------------------------------------------+ | Database | Create Database | +----------+-----------------------------------------------------------------------------------------------+ | s4 | CREATE DATABASE `s4` /*!40100 DEFAULT CHARACTER SET gbk */ /*!80016 DEFAULT ENCRYPTION=‘N‘ */ | +----------+-----------------------------------------------------------------------------------------------+ 1 row in set (0.00 sec) 修改已经创建的数据库的字符编码 ALTER DATABASE employee CHARACTER SET UTF8; 进入数据库: use bdname; 检测当前所在的数据库: select database(); +------------+ | database() | +------------+ | s4 | +------------+ 1 row in set (0.00 sec) 可以通过use dbname 在不同的数据库之间切换 表的创建 主键:非空且唯一 not null unique 三种数据类型:数字、字符、时间和日期 mysql> CREATE TABLE employee( --创建表 -> id INT PRIMARY KEY AUTO_INCREMENT, --主键 自增 -> name VARCHAR(25), --25个字节 -> birthday date, -> salary DOUBLE(7,1) --一共七个数字,小数点后一位 -> ); Query OK, 0 rows affected (0.10 sec) mysql> desc employee; 查看表结构 +----------+-------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +----------+-------------+------+-----+---------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | name | varchar(25) | YES | | NULL | | | birthday | date | YES | | NULL | | | salary | double(7,1) | YES | | NULL | | +----------+-------------+------+-----+---------+----------------+ 4 rows in set (0.01 sec) mysql> SHOW CREATE TABLE employee; --查看表的创建信息 +----------+------------------------------------ | Table | Create Table +----------+----------------------------- | employee | CREATE TABLE `employee` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(25) DEFAULT NULL, `birthday` date DEFAULT NULL, `salary` double(7,1) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=gbk | +----------+------------------------------- 1 row in set (0.01 sec) 表字段操作: 添加字段: ALTER TABLE employee ADD entry_date date not null AFTER birthday; --AFTER(FIRST)将字段添加到某个字段之后 添加多个字段 ALTER TABLE employee ADD A INT, ADD B INT; 删除字段: ALTER TABLE employee DROP A, DROP B; 修改字段: ALTER TABLE employee MODIFY A VARCHAR(4) UNIQUE; 修改已经创建的表的字符编码 ALTER TABLE employee CHARACTER SET UTF8; 修改字段名: ALTER TABLE EMPLOYEE CHANGE A B CHAR(4); 修改表名: RENAME TABLE S3 TO S4; 表记录操作: 向表中添加记录: 方式一 : () VALUES () VALUES左右对应 INSERT INTO EMP (id,name,gender,salary,B) VALUES (1,"瞎驴",1,5000.21,"HELL"); 添加多条: INSERT INTO EMP (name,gender,salary,B) VALUES ("ALEX",1,5000,"WORL"), ("丹丹",0,3000,"HELO"); 注意:如果插入的id号不是按顺序来的,下次插入会按插入的id继续向下计数 就是说本来id号到6了,继续插入记录应该是7,但指定id为10,下面插入的记录如果没指定id, 就是11 方式二: SET 键值对: INSERT INTO EMP SET name="珊珊",gender=0; --其余没有对应的自动为NULL 查看表记录: mysql> select * from emp; +----+------+--------+--------+------+ | id | name | gender | salary | B | +----+------+--------+--------+------+ | 1 | 瞎驴 | 1 | 5000.2 | HELL | | 4 | ALEX | 1 | 5000.0 | WORL | | 5 | 丹丹 | 0 | 3000.0 | HELO | +----+------+--------+--------+------+ 3 rows in set (0.00 sec) 修改表记录: UPDATE EMP SET name = "lvxia" WHERE ID = 1 -- WHER 做筛选,否则会修改所有的name 删除表记录: 两种方式: DELETE FROM TABLE_NAME [WHERE....]; :逐条删除 TRUNCATE TABLE TABLE_NAME; :删除整个表,在创建一个空表