博客
关于我
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/

你可能感兴趣的文章
mysql 的GROUP_CONCAT函数的使用(group_by 如何显示分组之前的数据)
查看>>
MySQL 的instr函数
查看>>
MySQL 的mysql_secure_installation安全脚本执行过程介绍
查看>>
MySQL 的Rename Table语句
查看>>
MySQL 的全局锁、表锁和行锁
查看>>
mysql 的存储引擎介绍
查看>>
MySQL 的存储引擎有哪些?为什么常用InnoDB?
查看>>
Mysql 知识回顾总结-索引
查看>>
Mysql 笔记
查看>>
MySQL 精选 60 道面试题(含答案)
查看>>
mysql 索引
查看>>
MySQL 索引失效的 15 种场景!
查看>>
MySQL 索引深入解析及优化策略
查看>>
MySQL 索引的面试题总结
查看>>
mysql 索引类型以及创建
查看>>
MySQL 索引连环问题,你能答对几个?
查看>>
Mysql 索引问题集锦
查看>>
Mysql 纵表转换为横表
查看>>
mysql 编译安装 window篇
查看>>
mysql 网络目录_联机目录数据库
查看>>