Bootstrap

MySQL从入门到入魔(01)

数据库

  • 学习数据库就是学习如何和数据库软件进行交流,SQL语言就是用于程序员和数据库软件进行交流的语言.

  • DBMS:DataBaseManagementSystem 数据库管理系统(数据库软件),包括:MySQL/Oracle/SQLServer,DB2,SQLite等

  • 常见DBMS介绍:

  • 网站的整套解决方案包括: 开发语言 操作系统 web服务器软件 数据库软件

  • 开源和闭源

SQL语言

  • Structured Query Language:结构化查询语言, 用于程序员和数据库软件(DBMS)进行交流

  • 如何连接数据库软件: 检查mysql服务开启 window键+r 输入services.msc

  • 开始菜单中找到Mysql/MariaDB文件夹 里面的 Mysql Client 打开后直接输入密码

  • 如果是linux或mac系统 先打开终端 在终端中输入 mysql -u用户名 -p回车 回车后输入密码 回车

  • 断开连接: 关闭窗口 或执行 exit;

数据库相关SQL语句

  • 往数据库软件中保存数据,需要先建库再建表,最后再操作表里面的数据

  • 格式:

  • 格式: create database 数据库名; 使用默认字符集创建数据

  create database db1;

  • 指定字符集格式: create database 数据库名 character set utf8/gbk;

  create database db2 character set utf8;
  create database db3 character set gbk;

  • 格式: show create database 数据库名;

  show create database db1;

  • 格式: drop database 数据库名;

  drop database db4;

  • 对表和数据进行操作时必须先使用了数据库才可以 不然会报错

  • 格式: use 数据库名;

  use db1;

数据库相关练习:

  create database mydb1 character set utf8;
  create database mydb2 character set gbk;

  show databases;

    show create database mydb1;
  show create database mydb2;

    use mydb1;
  use mydb2;

  drop database mydb1;
  drop database mydb2;

表相关的SQL

  • 操作表时一定保证已经使用了某个数据库 不然会报以下错:ERROR 1046 (3D000): No database selected

  • 格式: create table 表名(字段名 字段类型,字段名 字段类型);

  create table student(name varchar(10),age int);  

  • 指定字符集格式: create table 表名(字段名 类型,字段名 类型) charset=utf8/gbk;

create table person(name varchar(10),gender varchar(5))charset=gbk;

  • 格式: show tables;

  • 格式: show create table 表名;

  show create table person;

  • 格式: desc 表名;

  desc student;

  • 格式: drop table 表名:

  drop table student;

  • 格式: rename table 原名 to 新名;

  rename table person to t_person;

  • 最后添加格式: alter table 表名 add 字段名 类型;

  • 最前面添加:alter table 表名 add 字段名 类型 first;

  • 在某个字段后面添加 alter table 表名 add 字段名 类型 after xxx;

  alter table t_person add salary int;
  alter table t_person add id int first;
  alter table t_person add age int after name;

  • 格式: alter table 表名 drop 字段名;

  alter table t_person drop salary;

  • 格式: alter table 表名 change 原名 新名 新类型;

  alter table t_person change age salary int;

表相关SQL语句回顾

表相关练习题:

  • 创建数据库mydb1 字符集utf8 并使用该数据库

  create database mydb1 character set utf8;
  use mydb1;

  • 在mydb1中创建员工表emp 字段有name 表字符集也是utf8

  create table emp(name varchar(10)) charset=utf8;

  • 添加表字段age在最后

  alter table emp add age int;

  • 添加id字段在最前面

  alter table emp add id int first;

  • 添加性别gender在name后面

  alter table emp add gender varchar(5) after name;

  • 修改gender为工资sal

  alter table emp change gender sal int;

  • 删除age字段

  alter table emp drop age;

  • 修改表名为t_emp

  rename table emp to t_emp;

  • 删除t_emp表

  drop table t_emp;

  • 删除数据库

  drop database mydb1;

###数据相关SQL

  • 执行数据相关的SQL 必须保证已经使用了某个数据库,并且存在数据所对应的表格

  create database mydb2 character set utf8;
  use mydb2;
  create table person(name varchar(10),age int)charset=utf8;

  • 全表插入格式(要求值的数量和顺序必须和表字段一致): insert into 表名 values(值1,值2,值3);

  insert into person values('Tom',18);

  • 指定字段插入格式(要求值的数量和顺序必须和指定的一致): insert into 表名(字段名1,字段名2)values(值1,值2);

  insert into person(name)values('Jerry');

  • 批量插入数据格式: 在values后面写多组值即可finsert into person values('Lucy',20),('Lily',21);

  insert into person(name)values('zhangsan'),('lisi');

  • 插入中文:

  insert into person values('刘德华',30);

如果执行以上代码出现错误提示,提示里面包含16进制的错误信息 执行以下SQL

set names gbk;

  • 格式: select 字段信息 from 表名 where 条件;

  • 举例:查询person表中所有的名字

  • 查询person表中年龄大于20的名字和年龄查询person表中所有数据的所有字段信息

  • 格式: update 表名 set 字段名=xxx,字段名=xxx where 条件;

  • 举例:

  update person set age=8 where name='Tom';
  update person set age=10 where age is null;

  • 格式: delete from 表名 where 条件;

  • 举例:

  • 删除Tom

  delete from person where name='Tom';

2. 删除年龄小于20岁的

  delete from person where age<20;

3. 删除所有数据

  delete from person;

增删改查回顾:

数据类型

  create table t1(name varchar(10),age int(10) zerofill);
  insert into t1 values('Tom',18);
  select * from t1;

  • char(m): 固定长度 m=10 存"abc" 占10,执行效率略高 最大255

  • varchar(m):可变长度 m=10 存"abc" 占3,更节省存储空间, 最大65535 超过255建议使用text

  • text(m):可变长度,最大值65535.

  • date: 只能保存年月日

  • time: 只能保存时分秒

  • datetime:保存年月日时分秒,默认值是null,最大值9999-12-31

  • timestamp:时间戳(距离1970年毫秒数),保存年月日时分秒,默认值当前系统时间,最大值2038-1-19

  • 举例:

  create table t_date(t1 date,t2 time,t3 datetime,t4 timestamp);
  insert into t_date values('2020-1-18',null,null,null);
  insert into t_date values(null,'17:35:18','2020-3-17 12:30:23',null);