数据库基础
在我们目前的开发过程中,使用最多的就是关系型数据库(Oracle、MySQL、SQL Server、DB2等)。
在这里我们先主要讨论下MySQL
MySQL的优点:
- 开源、可供用户免费使用
- MySQL支持TCP/IP协议、ODBC和JDBC等数据库连接途径
- 支持多线程
- 可以更好的支持PHP
SQL语句
这是在数据库中通用的语言,所有的数据库都支持这些语句。
DDL:对数据库、数据库中的表、字段进行操作
创建数据库:
mysql> CREATE DATABASE test;
Query OK, 1 row affected
使用数据库:
mysql> USE test;
Database changed
查询所有的数据库:
mysql> SHOW DATABASES;
+--------------------+
| Database |
+--------------------+
| information_schema |
| ceshi |
| english |
| mybatis |
| mysql |
| performance_schema |
| spring |
| story |
| test |
+--------------------+
删除数据库:
mysql> DROP DATABASE test;
Query OK, 0 rows affected
创建表:
创建一个test的表,id为Int型的自增的主键,一个长度可变的char类型的字符数组username,一个长度可变的Char类型字符数组password
[SQL]
CREATE TABLE test(
id INT(5) PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(10),
password VARCHAR(10)
);
受影响的行: 0
时间: 0.965s
获取表的字段信息:
DESC test;
获取表的创建信息:
SHOW CREATE TABLE test;
修改表名:
ALTER TABLE test RENAME t_test;
删除表:
DROP TABLE t_test;
修改字段类型:
ALTER TABLE test MODIFY username VARCHAR(20);
添加字段类型:
ALTER TABLE test ADD type CHAR(1);
删除字段类型:
ALTER TABLE test DROP type;
修改字段名:
ALTER TABLE test CHANGE username name VARCHAR(10);
DML:对数据库进行增、删、改、查操作
增加:
方式一 ---------------------------> INSERT INTO test VALUES (1,'User1','123');
方式二 ---------------------------> INSERT INTO test(username, password) VALUES('User1', '123');
方式一这里,因为id设置成了自增长,所以可以将id设置为null值,他也会自动添加id的值。但是他每一个元素都必须赋值。
相比较于方式二,我们可以通过设置需要填入的数据,指定需要插入数据的元素。
删除:
清空表(清空后再次添加数据,主键从头开始)
TRUNCATE TABLE test;
清空表(清空后再次添加数据,主键接着清空之前的值继续)
DELETE FROM test;
清空指定的数据
DELETE FROM test WHERE id = 1;
修改:
修改数据
UPDATE test set password = '111' WHERE id = 1;
多条件修改
UPDATE test set password = '111' WHERE id > 2 AND password = '123';
查询:
查询表中所有数据:
SELECT * FROM test;
查询指定字段的数据:
SELECT username,password FROM test;
查询数据去重:
SELECT DISTINCT username FROM test;
条件查询:
SELECT * FROM test WHERE id = 1;
SELECT * FROM test WHERE id > 3 AND username = 'User5';
SELECT * FROM test WHERE username = 'User5' OR password = '123';
模糊查询:
SELECT * FROM test WHERE username LIKE '%ser';
SELECT * FROM test WHERE username LIKE 'use%';
SELECT * FROM test WHERE username LIKE '%se%';
SELECT * FROM test WHERE username LIKE '_ser';
SELECT * FROM test WHERE username LIKE 'use_';
SELECT * FROM test WHERE username LIKE '_se_';
SELECT * FROM test WHERE username LIKE '_se%';
SELECT * FROM test WHERE username LIKE ‘__er’;
重新创建一个表
CREATE TABLE `student` (
`id` int(10) NOT NULL AUTO_INCREMENT,
`name` varchar(32) DEFAULT NULL,
`t_id` int(10) DEFAULT NULL,
`age` int(10) DEFAULT NULL,
`money` double(10,2) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8
查询排序:
SELECT * FROM test ORDER BY id ASC;
SELECT * FROM test ORDER BY id DESC;
SELECT * FROM test ORDER BY id,password DESC;
DCL:对于权限的操作。
DDL:是数据库控制语言。用来设置或更改数据库用户或角色权限的语句,很少接触到。