• 售前

  • 售后

热门帖子
入门百科

MySQL-创建,删除数据库表,SQL下令

[复制链接]
veronica六 显示全部楼层 发表于 2022-1-16 11:27:42 |阅读模式 打印 上一主题 下一主题
一、MySQL 创建数据表

  1. CREATE TABLE table_name (column_name column_type);
复制代码
1、创建库并设置字符集编码为utf8
  1. <code>create database '库名' default character set = 'utf8';
复制代码
2、创建表并设置字符集编码为utf8
  1. <code>create table ‘表名’(id int(6),name char(10)) default character set = 'utf8';  
复制代码
实例:
  1. create table IF NOT EXISTS user (
  2.         id int(11) not null AUTO_INCREMENT,
  3.     name char(20) NOT NULL DEFAULT '' comment '用户名',
  4.     primary key(id)
  5. ) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;
复制代码
AUTO_INCREMENT 界说列为自增的属性,一样平常用于主键,数值会主动加1
  PRIMARY KEY 关键字用于界说列为主键;可以使用多列来界说主键,列间以逗号 ',' 分隔
  ENGINE 设置存储引擎
  CHARSET 设置编码
  3、快速创建表
  1. <code>create table table表名2 as select * from table表名1;
复制代码
 如下:
  1. <code>create table emp2 as select * from emp;
复制代码
将emp表的查询结果当做一张表新建;可以完成表的快速复制;表创建出来,同时表中的数据也复制过来了
  也可以复制一张表的部分字段
  1. <code>create table mytable as select empno,empname from emp where job = 'salesman';
复制代码
注:
  如果建表时没有指定设置字符集编码为utf8,则在插入数据时插入了中文,则会报错
  1. <code>mysql> insert into t_user values(3,'王二麻子','1992-06-18');
  2. ERROR 1366 (HY000): Incorrect string value: '\xCD\xF5\xB6\xFE\xC2\xE9...' for column 'name' at row 1
复制代码
二、MySQL 删除数据表

  1. DROP TABLE table_name;
复制代码
如果数据库中不存在该表,会报错:
  1. <code>mysql> drop table t_user;
  2. ERROR 1051 (42S02): Unknown table 'mydb.t_user'
复制代码
 因此必要使用如下语句,删除表之前判定表是否存在
  1. <code>drop table if exists table_name;
复制代码
 如许就不会报错
  1. <code>mysql> drop table if exists t_user;
  2. Query OK, 0 rows affected, 1 warning (0.00 sec)
复制代码
三、MySQL 插入数据

  INSERT INTO SQL
  1、字段名和值要逐一对应;数量要对应,数据范例要对应
  1. INSERT INTO table_name ( column_name1, column_name2,...column_nameN )
  2.                        VALUES
  3.                        ( value1, value2,...valueN );
  4. 或者 (无需列名,直接插入值)
  5. INSERT INTO table_name VALUES
  6.                        ( value1, value2,...valueN );
复制代码
实例:
  1. insert into user (id,name,) values(null,'小明');
  2. 或者
  3. insert into user values(null,'小明');
复制代码
不必要提供 主键 id 的数据,由于该字段我们在创建表的时间已经设置它
  AUTO_INCREMENT(主动增长) 属性。该字段会主动递增,而不必要手动设置
  注:
  字段名省略的时间,值必要都写上
  insert语句只要实行乐成了,那么表中肯定会增长一条记录;没有给别的字段指定值的话,默认值是NULL
  2、批量插入数据
  1. <code>insert into t_user(字段名1,字段名2) values(),(),(),();
复制代码
如下:
  1. <code>insert into t_user(id,name,birth,create_time) values
  2.                 (1,'zs','1992-10-11',now()),
  3.                 (2,'lisi','1993-06-12',now()),
  4.                 (3,'wangwu','1999-08-16',now());
  5. 或者
  6. insert into t_user values
  7.                 (1,'zs','1992-10-11',now()),
  8.                 (2,'lisi','1993-06-12',now()),
  9.                 (3,'wangwu','1999-08-16',now());
复制代码
 3、快速插入数据
  1. <code>insert into table表名2 select * from table表名1;
复制代码
如下:
  1. <code>insert into dept_bak select * from dept;
复制代码
四、MySQL 查询数据

  SELECT
  1. SELECT column_name,column_name
  2. FROM table_name
  3. [WHERE Clause]
  4. [LIMIT N][ OFFSET M]
复制代码
查询语句中可以使用一个大概多个字段,字段之间使用逗号(,)分割,并使用WHERE语句来设定查询条件。
  SELECT 下令可以读取一条大概多条记录
  使用星号(*)来取代其他字段,SELECT语句会返回表的全部字段数据
  使用 WHERE 语句来包罗任何条件
  使用 LIMIT 属性来设定返回的记录数
  通过OFFSET指定SELECT语句开始查询的数据偏移量。默认环境下偏移量为0
  1、查询全部字段两种方式
  【1】每个字段都写上,中心使用逗号(,)分割开来
  1. <code>select a,b,c,d from tablename;
复制代码
【2】使用星号(*)来取代其他字段
  1. <code>select * from tablename;
复制代码
注:
  使用星号(*)这种方式的缺点:
  1、服从低;(*)星号也是先更换表中全部字段再举行查询
  2、可读性差 
  select和from都是关键字
  字段名和表名都是标识符
  实例:
  1. select * from table_name;
复制代码
2、distinct 去除重复记录
  1. <code> select distinct job from emp;
复制代码
 
  注:
  【1】select distinct查询原表数据不会被修改,只是查询结果去重
  【2】distinct只能出如今全部字段的最火线
  1. <code>select empname,distinct job from emp;
复制代码
如下就会报错:
  1. <code>ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'distinct job from emp' at line 1
复制代码
 
  (1)distinct出如今两个字段之前,表现两个字段团结起往复重
  1. <code>select distinct job,deptno from emp;
复制代码

   (2)distinct 可以和 分组函数使用
  1. <code> select count(distinct job) as jobcount  from emp;
复制代码
 
  五、MySQL WHERE 子句

  使用 WHERE 子句从数据表中读取数据
  1. SELECT column1, column2,...columnN FROM table_name1, table_name2...
  2. [WHERE condition1 [AND [OR]] condition2.....
复制代码
实例:
  1. select * from user where id = '1';
复制代码
查询语句中可以使用一个大概多个表,表之间使用逗号, 分割,并使用WHERE语句来设定查询条件。
可以在 WHERE 子句中指定任何条件。
可以使用 AND 大概 OR 指定一个或多个条件。
WHERE 子句也可以运用于 SQL 的 DELETE 大概 UPDATE 下令。
WHERE 子句雷同于步伐语言中的 if 条件,根据 MySQL 表中的字段值来读取指定的数据。
  [table][tr]利用符形貌实例[/tr][tr][td]=[/td][td]等号,检测两个值是否相当,如果相当返回true[/td][td](A = B) 返回false。[/td][/tr][tr][td], !=[/td][td]不便是,检测两个值是否相当,如果不相当返回true[/td][td](A != B) 返回 true。[/td][/tr][tr][td]>[/td][td]大于号,检测左边的值是否大于右边的值, 如果左边的值大于右边的值返回true[/td][td](A > B) 返回false。[/td][/tr][tr][td]=[/td][td]大于便是号,检测左边的值是否大于或便是右边的值, 如果左边的值大于或便是右边的值返回true[/td][td](A >= B) 返回false。[/td][/tr][tr][td] delete from dept_bak; Query OK, 8 rows affected (0.00 sec)  mysql> select * from dept_bak; Empty set (0.00 sec)  mysql> rollback; Query OK, 0 rows affected (0.01 sec)  mysql> select * from dept_bak; +--------+------------+-----------+ | DEPTNO | DEPTNAME   | CITY      | +--------+------------+-----------+ |     10 | ACCOUNTING | BEI JING  | |     20 | PURCHASE   | TIAN JIN  | |     30 | SALES      | SHANG HAI | |     40 | HR         | SU ZHOU   | +--------+------------+-----------+ 8 rows in set (0.00 sec)[/code]  2、删除不可规复  truncate
  实行如下下令
  1. ELECT * from user WHERE BINARY name='xiaoming';
复制代码
  1. UPDATE table_name SET field1=new-value1, field2=new-value2
  2. [WHERE Clause]
复制代码
delete语句删除数据的原理
        表中的数据被删除了,但是这个数据在硬盘上的真实存储空间不会被开释
        这种删除缺点是:删除服从比力低
        这种删除长处是:支持回滚,可以再规复数据
    
truncate语句删除数据的原理
        这种删除服从比力高,表被一次截断,物理删除
        这种删除缺点:不支持回滚
        这种删除长处:快速
  truncate是删除表中的数据,表还在
  3、逻辑删除 和 物理删除
  (1)逻辑删除(软删除):逻辑删除就是对要被删除的数据打上一个删除标记,通常使用一个is_deleted字段标示行记录是不是被删除(大概使用一个status字段代表所谓的“删除”状态),在逻辑上是数据是被删除的,但数据本身是依然存在的
  (2)物理删除
  指文件存储所用到的磁存储地区被真正的擦除或清零,如许删除的文件是不可以规复的,物理删除是盘算机处理处罚数据时的一个概念。如果在数据库中直接使用delete、drop、truncate删除了表数据,如果没有备份的话,数据就很难规复了。
  注:
  没有限定条件,整张表的数据会全部删除!

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

帖子地址: 

回复

使用道具 举报

分享
推广
火星云矿 | 预约S19Pro,享500抵1000!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

草根技术分享(草根吧)是全球知名中文IT技术交流平台,创建于2021年,包含原创博客、精品问答、职业培训、技术社区、资源下载等产品服务,提供原创、优质、完整内容的专业IT技术开发社区。
  • 官方手机版

  • 微信公众号

  • 商务合作