*表的操作*
数据库是表的容器,表必须属于某个数据库;在进行表的操作时,都会指定当前的默认数据库。
1、创建表:CREATE TABLE table_name(列结构)[表选项]
(1)先分析要保存的实体数据,拥有哪些属性,这些属性该如何保存。
例如:班级的信息
班级班号、班级开班日期
> CREATE TABLE php_class(
-> class_nu varchar(20),
-> date_start date);
【注意】如果没有事先选择数据库,则通过语法database.table指明数据表所属数据库;如果出现特殊字符,
需要使用反引号包裹,不同标识符要分别包裹。
> CREATE TABLE test.php_class(
-> class_nu varchar(20),
-> date_start date);
> CREATE TABLE `123`. haha( #特殊字符要用反引号包裹
-> NAME VARCHAR(10),
-> AGE INT);
2、切换数据库操作:USE database_name;
例子:USE test;
3、查看数据库或表:
3.1:SHOW DATABASES; #查看数据库总数
SHOW DATABASES LIKE 'pattern';
3.2:SHOW TABLES; #查看表总数
SHOW TABLES LIKE 'pattern'; #其中like pattern部分,表示只获得那种规则的表名(筛选并查看表)
DESC table_name; #查看表的属性结构(DESC是DESCRIBE的缩写)
3.2.1:表名前缀:为了区分相同逻辑表名的不同应用,给逻辑表名,增加前缀。
/*学生管理*/
> CREATE TABLE info_student(
-> name varchar(20),
-> stu_nu varchar(20)
-> );
/*在线考试*/
> CREATE TABLE exam_student(
-> name varchar(20),
-> stu_nu varchar(20),
-> score int
-> );
当显示数据太多时(数据结构混乱),一般用G做结束符。
4、删除数据库或表:DROP DATABASE test; #删除数据库
DROP TABLE IF EXISTS database_name;
DROP TABLE info_student; #删除表
DROP TABLE IF EXISTS table_name; #删除一个不存在的表/数据库时,如果不加if exists,就会报错。
5、修改表:
(1)修改表名:RENAME TABLE old_table_name to new_table_name; #RENAME相当于剪切操作
例子:修改多个表名:
RENAME TABLE exam_student to exam_stu,info_student to info_stu;
例子:移动表到另一个数据库:
RENAME TABLE info_stu to `1234`.stu; #将当前数据库中的info_stu表移动到数据库名为1234中,并且命名为stu
例子:重命名一个数据库:
思路:rename不能直接用在数据库中,可以先新建一个数据库,然后用RENAME操作把表剪切到新的数据库中,最后把旧的数据库删除即可。
(2)修改列定义:
2.1:增加一个新的列:ADD +新列的定义
> ALTER TABLE info_stu ADD heigh INT;
2.2:重命名一个列:CHANGE
> ALTER TABLE exam_stu CHANGE score marks INT;
2.3:修改一个列的定义:MODIFY
> ALTER TABLE info_stu MODIFY stu_nu varchar(30);
2.4:删除一个列:DROP
> ALTER TABLE info_stu DROP heigh;
(3)修改表选项:
表选项例子:
MariaDB [test]> SHOW CREATE TABLE exam_stuG
*************************** 1. row ***************************
Table: exam_stu
Create Table: CREATE TABLE `exam_stu` (
`name` varchar(20) DEFAULT NULL,
`stu_nu` varchar(20) DEFAULT NULL,
`marks` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1
3.1:修改表选项命令:ALTER TABLE exam_stu character set utf8;