博客
关于我
mysql创建表,修改表操作
阅读量:769 次
发布时间:2019-03-24

本文共 2731 字,大约阅读时间需要 9 分钟。

数据库操作指南

1. 创建表

数据库表的设计是数据库开发的基础,以下是创建表的规范:

  • 表名应使用小括号包围,列名也需使用下划线表示。
  • 列字段信息需用逗号分隔,最后一列若无注释,避免多余逗号。
  • 数据类型需准确匹配(如int用于整数,varchar用于可变字符串)。
  • 同一数据库内表名应唯一。

示例:

CREATE TABLE `user_info` (    `user_id` INT(5) PRIMARY KEY AUTO_INCREMENT COMMENT '用户ID',    `username` VARCHAR(20) NOT NULL COMMENT '用户名',    `email` VARCHAR(100) UNIQUE KEY COMMENT '电子邮箱');

2. 修改表

通过ALTER TABLE命令修改表结构。

  • 重命名表
    ALTER TABLE `bill` RENAME AS `bill_info`;
  • 添加字段
    ALTER TABLE `bill_info` ADD COLUMN `telephone` VARCHAR(11) NOT NULL COMMENT '手机号';
  • 修改字段:确保原字段类型与新类型兼容,不建议默认值设置:
    ALTER TABLE `bill_info` MODIFY COLUMN `user_status` CHAR(3);
  • 修改列名
    ALTER TABLE `bill_info` CHANGE `order_no` TO `bill_number` VARCHAR(10) COMMENT '订单编号';
  • 删除字段
    ALTER TABLE `bill_info` DROP COLUMN `email`;

3. 查询优化

有效的查询需根据业务需求设计。

  • 筛选条件:使用WHERE子句加括号优化逻辑表达式。
  • IN操作:将多个值传递至字段时使用IN

示例:

-- 查询工资不低于12000的员工信息:SELECT e.employee_id, CONCAT(first_name, '.', last_name) AS employee_name, salary, department_id FROM employees e WHERE salary >= 12000;-- 判断字段是否为空:SELECT * FROM employees WHERE commission_pct IS NULL;-- 判断字段不为空:SELECT * FROM employees WHERE commission_pct IS NOT NULL;-- 查询部门编号为20、30、40、50、80的部门员工:SELECT * FROM employees WHERE department_id IN (20, 30, 40, 50, 80);-- 查询不属于上述部门的员工:SELECT * FROM employees WHERE department_id NOT IN (20, 30, 40, 50, 80);

4. SQL连接操作

数据库连接是多表查询的基础,需明确连接条件。

等值连接

SELECT e.employee_id, e.last_name, e.salary, d.department_name FROM employees e JOIN departments d ON e.department_id = d.department_id;

自连接

用于权限或组织架构问题,需确保字段关联合理:

SELECT e1.employee_id, e2.last_name, e2.salary FROM employees e1 JOIN employees e2 ON e1.manager_id = e2.employee_id WHERE e1.last_name = 'Austin';

5. 排序操作

ORDER BY用于确定结果排序方式。

示例:

-- 按绩效结果排序,取前四名:SELECT s.stu_no, s.stu_name, su.subj_name, re.result FROM subjects su, result re, students st WHERE su.subj_no = re.subj_no AND re.stu_no = st.stu_no AND su.subj_name = '数据库结构-2' ORDER BY re.stu_result DESCLIMIT 3, 3;

6. 系统函数应用

MySQL提供丰富系统函数,常用于数据计算和处理。

  • 数值函数:如ROUNDMOD用于数据格式化:

    ROUND(123.55, 1), MOD(11, 4), RAND(), TRUNCATE(123.55, 1) FROM DUAL;
  • 字符串函数:如CONCATSUBSTRING用于文本操作:

    CONCAT('hello-', 'mysql'), SUBSTRING('hellomysql', 2, 4) FROM DUAL;
  • 日期函数:用于时间数据处理:

    DATE_FORMAT(now(), '%Y-%m-%d %H:%i:%s'), CURRENT_DATE() FROM DUAL;

7. 索引管理

索引是性能的重要加速手段,需谨慎设计。

删除索引

-- 删除表中唯一约束:SHOW INDEXES FROM emp3;-- 使用`ALTER TABLE`删除索引:ALTER TABLE emp3 DROP INDEX emp3_name_email_uk;

8. 外键约束

外键负责表间关系管理,需严格遵守数据库规范。

  • 创建外键

    CREATE TABLE emp5 (    emp_id INT(6),    emp_name VARCHAR(32) NOT NULL,    emp_email VARCHAR(100),    dept_id INT(6),    CONSTRAINT emp5_id_pk PRIMARY KEY (emp_id),    CONSTRAINT emp5_dept_id_fk FOREIGN KEY (dept_id)         REFERENCES dept1(dept_id) ON DELETE CASCADE);
  • 外键命名规范:外键命名应包含表名和字段名,便于管理和追溯。

通过合理设计和优化数据库操作,可以显著提升应用性能和维护效率。

转载地址:http://jyvkk.baihongyu.com/

你可能感兴趣的文章
MySQL8找不到my.ini配置文件以及报sql_mode=only_full_group_by解决方案
查看>>
mysql8的安装与卸载
查看>>
MySQL8,体验不一样的安装方式!
查看>>
MySQL: Host '127.0.0.1' is not allowed to connect to this MySQL server
查看>>
Mysql: 对换(替换)两条记录的同一个字段值
查看>>
mysql:Can‘t connect to local MySQL server through socket ‘/var/run/mysqld/mysqld.sock‘解决方法
查看>>
MYSQL:基础——3N范式的表结构设计
查看>>
MYSQL:基础——触发器
查看>>
Mysql:连接报错“closing inbound before receiving peer‘s close_notify”
查看>>
mysqlbinlog报错unknown variable ‘default-character-set=utf8mb4‘
查看>>
mysqldump 参数--lock-tables浅析
查看>>
mysqldump 导出中文乱码
查看>>
mysqldump 导出数据库中每张表的前n条
查看>>
mysqldump: Got error: 1044: Access denied for user ‘xx’@’xx’ to database ‘xx’ when using LOCK TABLES
查看>>
Mysqldump参数大全(参数来源于mysql5.5.19源码)
查看>>
mysqldump备份时忽略某些表
查看>>
mysqldump实现数据备份及灾难恢复
查看>>
mysqldump数据库备份无法进行操作只能查询 --single-transaction
查看>>
mysqldump的一些用法
查看>>
mysqli
查看>>