精华内容
下载资源
问答
  • mysql基本语句

    2016-05-05 10:13:48
    mysql基本语句
  • MySQL 基本语句

    2020-10-26 19:16:11
    MySQL 基本语句 常用数据类型 int :整型,4个字节 double:浮点型,例如double(5,2)表示最多5位,其中2位为小数,即最大值为999.99。 varchar:可变长度字符串类型。varchar(10) ‘aaa’ 占3位 datetime:日期时间类型...

    MySQL 基本语句

    常用数据类型
    int :整型,4个字节
    double:浮点型,例如double(5,2)表示最多5位,其中2位为小数,即最大值为999.99。
    varchar:可变长度字符串类型。varchar(10) ‘aaa’ 占3位
    datetime:日期时间类型。yyyy-MM-dd hh:mm:ss
    char:固定长度字符串类型。char(10) ‘aaa ’ 占10位
    text:大文本字符串类型
    blob:字节类型
    date:日期类型,格式为:yyyy-MM-dd
    time:时间类型,格式为:hh:mm:ss
    timestamp:时间戳类型 yyyy-MM-dd hh:mm:ss 会自动赋值
    字符串类型和日期类型都要用单引号括起来。
    空值:null**
    字符集查看;

    show character set;
    查看数据库编码;
    show variables like ‘character %’
    使用 mysql 命令临时修改字符集;
    set character_set_client = utf8;
    set character_set_connection = utf8;
    set character_set_database = utf8;
    set character_set_results = utf8;
    set character_set_server = utf8;
    如果已经存入的数据库仍然出现乱码,问题出现在connection上;需要在发送查询前执行下面语句;
    set names (‘UTF8’)
    查看数据库
    show databases
    使用create database 或 create schema命令可以创建数据库
    打开数据库,例如mysqltest库
    use mydqltext
    显示数据库mysqltext
    show create database mysqltext
    删除数据库
    drop database mysqltext
    查看表
    show tables
    查看表的基本结构语句 describe
    查看表详细结构语句 show create table
    MySQL中用 drop table语句删除表
    创建临时表时给正常的create table 语句加上temporary关键字,如:create temporary table tmp_emp1
    删除临时表与一般用户表一样
    使用insert | replace语句添加数据
    利用load data 语句将数据库装入数据库表中
    使用set子句插入数据
    用updata…set…命令可以修改一个表的数据
    利用delete…from…语句可以从单个表中删除指定数据
    delete[low_priority] [quick] [ignore] from tbl_name
    [where 子句]
    [order by 子句]
    [limit row_count]

    展开全文
  • Mysql 基本语句

    2018-09-09 11:25:02
    MySQL入门基本语句MySQL是一种关系数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。
  • MySQL基本语句

    2018-11-26 22:46:28
    MySQL基本语句 1.创建数据库: create database 数据库名; 2. (1)创建表: create table 表名(字段名1 类型 条件,字段名2 类型 条件,……) (2)查看表: desc 表名 (3)查看建表语句:show create table ...

    MySQL基本语句

    1.创建数据库: create database 数据库名;

    在这里插入图片描述

    2. (1)创建表: create table 表名(字段名1 类型 条件,字段名2 类型 条件,……) (2)查看表: desc 表名 (3)查看建表语句:show create table 表名

    在这里插入图片描述

    3.删除表:drop table 表名;

    在这里插入图片描述

    4.修改字段名:alter table 旧表名 change 新表名 类型 条件;

    在这里插入图片描述

    5.在表中插入数据: 方法一:insert into表名(字段名1,字段名2,……) values(数据1,数据2,……)

    在这里插入图片描述
    方法二:insert into 表名 values(ID,数据1,数据2,……)在这里插入图片描述
    注意:使用第二种方法要确保有n个字段就插入n个数据,ID也要插入;而使用第一种方法可以不插入ID,前提是ID设置是自增的。

    6.update 表名 set 字段名=___ where id=__,改变指定id下的同一行数据的值。

    在这里插入图片描述

    7.update 表名set 字段名= ___ ;将字段下的多个数据全改为同一值。

    在这里插入图片描述

    8.update 表名 set 字段名=___ where id in(2,4,8……);将指定ID的某字段下的数据改为同一值。

    在这里插入图片描述

    9.update 表名 set 字段名=___ where id between __ and __;将连续的某字段下的数据改为同一值。

    在这里插入图片描述

    展开全文
  • Mysql基本语句

    万次阅读 多人点赞 2019-06-07 14:04:16
    三、Mysql语句(关于数据库的相关操作) 1、登录数据库 [root@xuegod ~]# mysql -uroot -p123456 -u:后加登录数据库的用户名,可以加空格,也可以不加 -p:后加登录数据库的用户名的密码,不加空格 mysql: ...

    一、SQL概述
    结构化查询语言(Structured Query Language)简称SQL,是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统,同时也是数据库脚本文件的扩展名。
    从上可以看出我们数据库相关工作职位大概两种:DBA和DBD
    DBA是数据库管理员database administrator
    DBD是数据库开发人员database developer

    SQL 是1986年10 月由美国国家标准局(ANSI)通过的数据库语言美国标准,接着,国际标准化组织(ISO)颁布了SQL正式国际标准。1989年4月,ISO提出了具有完整性特征的SQL89标准,1992年11月又公布了SQL92标准。

    常见的数据库软件名称:括DB2、ORACLE、SYBASE、MySQL、SQLSERVER、ACCESS等。

    1、常见sql语句
    select 查询语句
    insert 插入语句
    delete 删除语句
    update 更新语句

    2、理解数据库
    数据库是一个有组织的,根据具体标准分类的数据集合
    例如:
    • 档案柜=数据库服务器
    • 抽屉=数据库
    • 文件=表
    • 文件中每条信息=记录

    二、SQL语句结构
    SQL结构化查询语言包含6个部分:
    1、数据查询语言(DQL:Data Query Language)
    其语句,也称为“数据检索语句”,用以从表中获得数据,确定数据怎样在应用程序给出。保留字SELECT是DQL(也是所有SQL)用得最多的动词,其他DQL常用的保留字有WHERE,ORDER BY,GROUP BY和HAVING。这些DQL保留字常与其他类型的SQL语句一起使用。

    2、数据操作语言(DML:Data Manipulation Language)
    其语句包括动词INSERT,UPDATE和DELETE。它们分别用于添加,修改和删除表中的行。也称为动作查询语言。

    3、事务处理语言(TPL):跟shell有点类似 由多条SQL语句组成的整体
    它的语句能确保被DML语句影响的表的所有行及时得以更新。TPL语句包括BEGIN TRANSACTION,COMMIT和ROLLBACK。

    4、数据控制语言(DCL)
    它的语句通过GRANT或REVOKE获得许可,确定单个用户和用户组对数据库对象的访问。某些RDBMS可用GRANT或REVOKE控制对表单个列的访问。

    5、数据定义语言(DDL)
    其语句包括动词CREATE和DROP。在数据库中创建新表或删除表(CREAT TABLE 或 DROP TABLE);为表加入索引等。DDL包括许多与人数据库目录中获得数据有关的保留字。它也是动作查询的一部分。

    6、指针控制语言(CCL)
    它的语句,像DECLARE CURSOR,FETCH INTO和UPDATE WHERE CURRENT用于对一个或多个表单独行的操作。declare [dɪˈkler] 声明 ; cursor [ˈkɜ:rsə®] 光标 ; into [ˈɪntu] 获取到

    三、Mysql语句(关于数据库的相关操作)
    1、登录数据库
    [root@xuegod ~]# mysql -uroot -p123456
    -u:后加登录数据库的用户名,可以加空格,也可以不加
    -p:后加登录数据库的用户名的密码,不加空格
    mysql: [Warning] Using a password on the command line interface can be insecure.
    Welcome to the MySQL monitor. Commands end with ; or \g.
    Your MySQL connection id is 3
    Server version: 5.7.26

    Copyright © 2000, 2019, Oracle and/or its affiliates. All rights reserved.

    Oracle is a registered trademark of Oracle Corporation and/or its
    affiliates. Other names may be trademarks of their respective
    owners.

    Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the current input statement.

    mysql>

    2、查看所有数据库
    mysql> show database;
    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 ‘database’ at line 1
    mysql> show databases;
    ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
    注:这里我们可以看到执行查看数据库命令,提示:在执行此语句之前,必须使用alter user语句重置密码。
    因为:mysql的密码默认是360天需要修改一次,所以初次安装mysql数据库后,登录数据库,默认需要修改密码,否则做任何操作,都无法执行。
    mysql> show variables like ‘default_password_lifetime’;
    ±--------------------------±------+
    | Variable_name | Value |
    ±--------------------------±------+
    | default_password_lifetime | 0 |
    ±--------------------------±------+
    1 row in set (0.00 sec)

    在5.7.11之前,默认 default_password_lifetime值为360(密码每年大约必须更改一次)。对于此类版本,请注意,如果您未对default_password_lifetime 变量或单个用户帐户进行任何更改 ,则每个用户密码将在360天后过期,并且帐户将以受限模式运行。使用该帐户连接到服务器的客户端会收到错误,指示必须更改密码:ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.

    将default_password_lifetime 变量设置 为0,从而禁用所有用户的自动密码到期。
    我们这里显示的值是0,是因为在my.cnf配置文件内,添加了如下一行参数:
    [mysqld]
    default_password_lifetime=0

    具体操作如下:
    因为这里我们使用的实现环境,设置的密码是简单密码,所以还需要关闭密码复杂度,修改my.cnf文件,添加如下一行内容:
    在/etc/my.cnf 可关闭密码强度审计插件,重启MySQl服务。
    在[mysqld]末行;
    validate-password=OFF #不使用密码强度审计插件
    [root@xuegod63 ~]# systemctl restart mysqld #重启数据库服务
    然后使用ALTER USER修改密码
    mysql> alter user user() identified by “123456”; #修改当前登录用户的密码为123456
    Query OK, 0 rows affected (0.00 sec)

    这里我们再来查看数据库:
    mysql> show databases;
    ±-------------------+
    | Database |
    ±-------------------+
    | information_schema |
    | mysql |
    | performance_schema |
    | sys |
    ±-------------------+
    4 rows in set (0.00 sec)
    注:
    (1)information_schema #这数据库保存了MySQL服务器所有数据库的信息。如数据库名,数据库的表,表栏的数据类型不访问权限等。 schema [ˈskimə] 图表
    (2)performance_schema #MySQL 5.5开始新增一个数据库:PERFORMANCE_SCHEMA,主要用于收集数据库服务器性能参数。并且库里表的存储引擎均为PERFORMANCE_SCHEMA,而用户是不能创建存储引擎为PERFORMANCE_SCHEMA的表。performance [pəˈfɔ:məns] 性能
    (3)mysql库是系统库,里面保存有账户信息,权限信息等。
    (4)MySQL 5.7增加了sys 系统数据库,通过这个库可以快速的了解系统的元数据信息。元数据是关于数据信息的数据,如:数据库名或表名,列的数据类型,或访问权限等。
    例1:以行的方式显示数据库: \G #将分号更换为\G
    mysql> show databases\G
    *************************** 1. row ***************************
    Database: information_schema
    *************************** 2. row ***************************
    Database: mysql
    *************************** 3. row ***************************
    Database: performance_schema
    *************************** 4. row ***************************
    Database: sys
    4 rows in set (0.00 sec)

    例2:mysql语句,可以直接在终端进行交互
    使用-e 参数,这里后面写SQL相关的shell脚本会用到
    [root@xuegod ~]# mysql -e ‘show databases;’ -uroot -p123456
    mysql: [Warning] Using a password on the command line interface can be insecure.
    ±-------------------+
    | Database |
    ±-------------------+
    | information_schema |
    | mysql |
    | performance_schema |
    | sys |
    ±-------------------+
    [root@xuegod ~]#

    3、创建数据库
    语法:create dabase 数据库名;
    创建数据库注意事项:
    (1)在文件系统中,MySQL的数据存储区将以目录方式表示MySQL数据库。因此,上面命令中的数据库名字必须与操作系统的约束的目录名字一致。例如不允许文件和目录名中有,/,:,*,?,”,<,>,|这些符号,在MySQL数据库名字中这些字母会被自动删除。<遵从目录的约束>
    (2)数据库的名字不能超过64个字符,包含特殊字符的名字或者是全部由数字或保留字组成的名字必须用反引号``包起来。
    (3)数据库不能重名。

    例1:创建数据库
    mysql> create database HA; #没有保留字或特殊符号,可以直接创建成功
    Query OK, 1 row affected (0.00 sec)

    mysql> create database HA-test; #有连接符号,不加反引号,无法创建成功
    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 ‘-test’ at line 1
    mysql> create database ‘HA-test’; #加单引号无法创建成功
    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 ‘‘HA-test’’ at line 1
    mysql> create database HA-test; #必须加反引号才能创建成功
    Query OK, 1 row affected (0.00 sec)
    mysql> show databases\G
    *************************** 1. row ***************************
    Database: information_schema
    *************************** 2. row ***************************
    Database: HA
    *************************** 3. row ***************************
    Database: HA-test
    *************************** 4. row ***************************
    Database: mysql
    *************************** 5. row ***************************
    Database: performance_schema
    *************************** 6. row ***************************
    Database: sys
    6 rows in set (0.00 sec)
    总结:单引号和反引号使用场景
    反引号是为了区分MySQL的保留字与普通字符而引入的符号。
    例:create database create;
    如果不用反引号,MySQL将把create视为保留字而导致出错,所以,有MySQL保留字作为字段的,必须加上反引号来区分。 
    引号一般用在字段的值,如果字段值是字符或字符串,则要加引号,如:select=‘字段值’
     不加反引号建的数据库或表不能包含MySQL保留字,否则出错。
    重点:数据库的存放目录
    [root@xuegod ~]# ls /var/lib/mysql
    auto.cnf client-key.pem ibdata1 mysql private_key.pem sys
    ca-key.pem HA ib_logfile0 mysql.sock public_key.pem
    ca.pem HA@002dtest ib_logfile1 mysql.sock.lock server-cert.pem
    client-cert.pem ib_buffer_pool ibtmp1 performance_schema server-key.pem

    4、选择需要操作的数据库
    使用USE语句将会选择一个数据库成为当前数据库。后面的操作默认都在被选择的数据库中操作。
    mysql> use HA; #进入HA数据库
    Database changed

    直接通过命令行,进入需要进入的数据库
    [root@xuegod ~]# mysql -uroot -p123456 HA #后直接跟数据库名称
    mysql: [Warning] Using a password on the command line interface can be insecure.
    Welcome to the MySQL monitor. Commands end with ; or \g.
    Your MySQL connection id is 7
    Server version: 5.7.26 MySQL Community Server (GPL)

    Copyright © 2000, 2019, Oracle and/or its affiliates. All rights reserved.

    Oracle is a registered trademark of Oracle Corporation and/or its
    affiliates. Other names may be trademarks of their respective
    owners.

    Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the current input statement.

    mysql> select database();
    ±-----------+
    | database() |
    ±-----------+
    | HA |
    ±-----------+
    1 row in set (0.00 sec)

    5、查看当前所在的数据库
    mysql> select database(); #查看当前所在的数据库是哪一个
    ±-----------+
    | database() |
    ±-----------+
    | HA |
    ±-----------+
    1 row in set (0.00 sec)
    如果当前没有在数据库内,显示为NULL
    mysql> select database();
    ±-----------+
    | database() |
    ±-----------+
    | NULL |
    ±-----------+
    1 row in set (0.00 sec)

    select user(); :显示当前登录用户
    select now(); :显示当前的系统时间
    mysql> select user(),database(),now();
    ±---------------±-----------±--------------------+
    | user() | database() | now() |
    ±---------------±-----------±--------------------+
    | root@localhost | HA | 2019-06-07 11:22:38 |
    ±---------------±-----------±--------------------+
    1 row in set (0.00 sec)

    6、删除数据库
    删除数据库没有提示,所以需要慎重
    方法1:使用drop命令删除数据库
    mysql> drop database HA-test;
    Query OK, 0 rows affected (0.00 sec)

    mysql> show databases;
    ±-------------------+
    | Database |
    ±-------------------+
    | information_schema |
    | HA |
    | mysql |
    | performance_schema |
    | sys |
    ±-------------------+
    5 rows in set (0.00 sec)

    方法2:直接到mysql的数据库目录,进行删除
    mysql> create database HA-test;
    Query OK, 1 row affected (0.00 sec)
    [root@xuegod ~]# cd /var/lib/mysql
    [root@xuegod mysql]# rm -rf HA@002dtest/
    进入数据库,查看是否删除
    mysql> show databases;
    ±-------------------+
    | Database |
    ±-------------------+
    | information_schema |
    | HA |
    | mysql |
    | performance_schema |
    | sys |
    ±-------------------+
    5 rows in set (0.00 sec)

    方法3:使用判断语句,避免删除不存在的数据库出现报错信息
    mysql> drop database HA-test;
    ERROR 1008 (HY000): Can’t drop database ‘HA-test’; database doesn’t exist
    mysql> drop database if exists HA-test;
    Query OK, 0 rows affected, 1 warning (0.00 sec)

    同理,创建数据库是,可以使用if not exists来判断,避免数据库存在,创建报错
    mysql> create database HA;
    ERROR 1007 (HY000): Can’t create database ‘HA’; database exists
    mysql> create database if not exists HA;
    Query OK, 1 row affected, 1 warning (0.00 sec)

    四、mysql语句(关于表的相关操作)
    1、查看数据库中,有哪些表存在,要进入到数据库查询
    mysql> use HA;
    Database changed
    mysql> show tables; #没有表存在
    Empty set (0.00 sec)

    mysql> use mysql;
    Reading table information for completion of table and column names
    You can turn off this feature to get a quicker startup with -A

    Database changed
    mysql> show tables; #中间省略了很多表,没有复制
    ±--------------------------+
    | Tables_in_mysql |
    ±--------------------------+
    | columns_priv |
    | proxies_priv |
    | server_cost |
    | user |
    ±--------------------------+
    31 rows in set (0.00 sec) #总共有31个表

    2、创建表
    语法:create tables 表名(字段名 类型, 字段名 类型, 字段名 类型);
    mysql> use HA;
    Database changed
    mysql> create table student(id int,name char(40),age int(10));
    Query OK, 0 rows affected (0.02 sec)

    3、查看表结构
    语法:desc 表名;
    mysql> desc student;
    ±------±---------±-----±----±--------±------+
    | Field | Type | Null | Key | Default | Extra |
    ±------±---------±-----±----±--------±------+
    | id | int(11) | YES | | NULL | |
    | name | char(40) | YES | | NULL | |
    | age | int(10) | YES | | NULL | |
    ±------±---------±-----±----±--------±------+
    3 rows in set (0.05 sec)

    mysql> desc mysql.user; #查询表结果,可以跨库查询
    ±------±---------±-----±----±--------±------+
    | Field | Type | Null | Key | Default | Extra |
    ±------±---------±-----±----±--------±------+ #中间省略没复制
    | account_locked | enum(‘N’,‘Y’) | NO | | N | |
    ±-----------------------±----------------------------------±-----±----±----------------------±------+
    45 rows in set (0.00 sec)

    查看表结构的其它方法(了解)
    mysql> explain HA.student;
    mysql> show columns from HA.student;
    mysql> show fields from HA.student;

    4、查看创建表的时候,执行了那些命令
    mysql> show create table student;
    ±--------±----------------------------------------------------------------------------------------------------------------------------------------------------------+
    | Table | Create Table |
    ±--------±----------------------------------------------------------------------------------------------------------------------------------------------------------+
    | student | CREATE TABLE student (
    id int(11) DEFAULT NULL,
    name char(40) DEFAULT NULL,
    age int(10) DEFAULT NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1 |
    ±--------±----------------------------------------------------------------------------------------------------------------------------------------------------------+
    1 row in set (0.00 sec)
    注:修改默认字符集
    这里我们可以看到,创建的数据库的字符截是Latin1拉丁文1,我们一般使用的都是utf8字符集,修改配置文件,重启mysql服务
    在my.cnf配置文件,添加如下一行,重启服务
    23 character_set_server=utf8
    [root@xuegod ~]# !sys
    systemctl restart mysqld
    我们修改了配置文件后,之前创建的数据库,字符集是不会修改,需要删除后重建。
    mysql> show create database HA;
    ±---------±--------------------------------------------------------------+
    | Database | Create Database |
    ±---------±--------------------------------------------------------------+
    | HA | CREATE DATABASE HA /*!40100 DEFAULT CHARACTER SET latin1 */ | #没修改
    ±---------±--------------------------------------------------------------+
    1 row in set (0.00 sec)
    删除重建
    mysql> drop database HA;
    mysql> create database HA;
    Query OK, 1 row affected (0.00 sec)

    mysql> use HA;
    Database changed
    mysql> create table student(id int(10),name char(25),age int(11));
    Query OK, 0 rows affected (0.01 sec)
    mysql> desc student;
    ±------±---------±-----±----±--------±------+
    | Field | Type | Null | Key | Default | Extra |
    ±------±---------±-----±----±--------±------+
    | id | int(10) | YES | | NULL | |
    | name | char(25) | YES | | NULL | |
    | age | int(11) | YES | | NULL | |
    ±------±---------±-----±----±--------±------+
    3 rows in set (0.01 sec)
    mysql> show create table student;
    ±--------±--------------------------------------------------------------------------------------------------------------------------------------------------------+
    | Table | Create Table |
    ±--------±--------------------------------------------------------------------------------------------------------------------------------------------------------+
    | student | CREATE TABLE student (
    id int(10) DEFAULT NULL,
    name char(25) DEFAULT NULL,
    age int(11) DEFAULT NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 | #已经修改过来
    ±--------±--------------------------------------------------------------------------------------------------------------------------------------------------------+
    1 row in set (0.00 sec)
    mysql> show create database HA;
    ±---------±------------------------------------------------------------+
    | Database | Create Database |
    ±---------±------------------------------------------------------------+
    | HA | CREATE DATABASE HA /*!40100 DEFAULT CHARACTER SET utf8 */ |
    ±---------±------------------------------------------------------------+
    1 row in set (0.00 sec)

    5、删除表
    mysql> create table student2(id int(20),name char(40),age int)ENGINE=MyISAM DEFAULT CHARSET=utf8;  #指定数据库引擎和字符集
    Query OK, 0 rows affected (0.01 sec)
    mysql> show create table student2;
    ±---------±---------------------------------------------------------------------------------------------------------------------------------------------------------+
    | Table | Create Table |
    ±---------±---------------------------------------------------------------------------------------------------------------------------------------------------------+
    | student2 | CREATE TABLE student2 (
    id int(20) DEFAULT NULL,
    name char(40) DEFAULT NULL,
    age int(11) DEFAULT NULL
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8 |
    ±---------±---------------------------------------------------------------------------------------------------------------------------------------------------------+
    1 row in set (0.00 sec)
    mysql> drop table student2;
    Query OK, 0 rows affected (0.00 sec)

    mysql> show tables;
    ±-------------+
    | Tables_in_HA |
    ±-------------+
    | student |
    ±-------------+
    1 row in set (0.00 sec)

    6、禁止显示预读信息
    在登录数据库前,加上-A参数
    没禁止前,会有很多提示信息:
    [root@xuegod ~]# mysql -uroot -p123456
    mysql> use HA;
    Reading table information for completion of table and column names
    You can turn off this feature to get a quicker startup with -A

    Database changed
    禁止后,如下:
    [root@xuegod ~]# mysql -uroot -p123456 -A
    mysql> use HA;
    Database changed

    7、修改表名称
    语法:alter table 表名 rename 新表名;
    mysql> select database(); #查看当前所在库
    ±-----------+
    | database() |
    ±-----------+
    | HA |
    ±-----------+
    1 row in set (0.00 sec)

    mysql> show tables; #查看库下的所有表
    ±-------------+
    | Tables_in_HA |
    ±-------------+
    | student |
    ±-------------+
    1 row in set (0.00 sec)

    mysql> alter table student rename students; #修改表名为students
    Query OK, 0 rows affected (0.00 sec)

    mysql> show tables; #查看是否修改
    ±-------------+
    | Tables_in_HA |
    ±-------------+
    | students |
    ±-------------+
    1 row in set (0.00 sec)

    8、修改表中的字段类型
    语法:alter table 表名 modify 要修改的字段名要修改的类型;
    mysql> desc students;
    ±------±---------±-----±----±--------±------+
    | Field | Type | Null | Key | Default | Extra |
    ±------±---------±-----±----±--------±------+
    | id | int(10) | YES | | NULL | |
    | name | char(25) | YES | | NULL | |
    | age | int(11) | YES | | NULL | |
    ±------±---------±-----±----±--------±------+
    3 rows in set (0.00 sec)

    mysql> alter table students modify id int(15); #修改表中字段的数值
    Query OK, 0 rows affected (0.00 sec)
    Records: 0 Duplicates: 0 Warnings: 0

    mysql> desc students;
    ±------±---------±-----±----±--------±------+
    | Field | Type | Null | Key | Default | Extra |
    ±------±---------±-----±----±--------±------+
    | id | int(15) | YES | | NULL | |
    | name | char(25) | YES | | NULL | |
    | age | int(11) | YES | | NULL | |
    ±------±---------±-----±----±--------±------+
    3 rows in set (0.00 sec)

    mysql> alter table students modify id char(15); #修改表中字段的类型
    Query OK, 0 rows affected (0.04 sec)
    Records: 0 Duplicates: 0 Warnings: 0

    mysql> desc students;
    ±------±---------±-----±----±--------±------+
    | Field | Type | Null | Key | Default | Extra |
    ±------±---------±-----±----±--------±------+
    | id | char(15) | YES | | NULL | |
    | name | char(25) | YES | | NULL | |
    | age | int(11) | YES | | NULL | |
    ±------±---------±-----±----±--------±------+
    3 rows in set (0.00 sec)

    9、修改表中的字段类型和字段名称
    语法:alter table 表名 change 原字段名 新字段名字段类型;
    注意:MySQL不支持同时修改多个字段。
    mysql> desc students;
    ±------±---------±-----±----±--------±------+
    | Field | Type | Null | Key | Default | Extra |
    ±------±---------±-----±----±--------±------+
    | id | int(15) | YES | | NULL | |
    | name | char(25) | YES | | NULL | |
    | age | int(11) | YES | | NULL | |
    ±------±---------±-----±----±--------±------+
    3 rows in set (0.00 sec)

    mysql> alter table students change name stname char(20); #修改字段名和字段数值
    Query OK, 0 rows affected (0.02 sec)
    Records: 0 Duplicates: 0 Warnings: 0

    mysql> desc students;
    ±-------±---------±-----±----±--------±------+
    | Field | Type | Null | Key | Default | Extra |
    ±-------±---------±-----±----±--------±------+
    | id | int(15) | YES | | NULL | |
    | stname | char(20) | YES | | NULL | |
    | age | int(11) | YES | | NULL | |
    ±-------±---------±-----±----±--------±------+
    3 rows in set (0.00 sec)
    注:CHANGE 和MODIFY的区别:
    CHANGE 对列进行重命名和更改列的类型,需给定旧的列名称和新的列名称、当前的类型。 MODIFY 可以改变列的类型,此时不需要重命名(不需给定新的列名称)

    10、在表中添加新的字段
    语法:alter table 表名 add 字段名 字段类型;
    mysql> alter table students add sex enum(‘M’,‘W’); #增加一个字段,默认追加在最后
    Query OK, 0 rows affected (0.02 sec)
    Records: 0 Duplicates: 0 Warnings: 0

    mysql> desc students;
    ±-------±--------------±-----±----±--------±------+
    | Field | Type | Null | Key | Default | Extra |
    ±-------±--------------±-----±----±--------±------+
    | id | int(15) | YES | | NULL | |
    | stname | char(20) | YES | | NULL | |
    | age | int(11) | YES | | NULL | |
    | sex | enum(‘M’,‘W’) | YES | | NULL | |
    ±-------±--------------±-----±----±--------±------+
    4 rows in set (0.00 sec)

    11、在表的第一列,增加一个字段
    语法:alter table 表名 add 字段名 字段类型 first;
    mysql> alter table students add uid int(10) first;
    Query OK, 0 rows affected (0.02 sec)
    Records: 0 Duplicates: 0 Warnings: 0

    mysql> desc students;
    ±-------±--------------±-----±----±--------±------+
    | Field | Type | Null | Key | Default | Extra |
    ±-------±--------------±-----±----±--------±------+
    | uid | int(10) | YES | | NULL | |
    | id | int(15) | YES | | NULL | |
    | stname | char(20) | YES | | NULL | |
    | age | int(11) | YES | | NULL | |
    | sex | enum(‘M’,‘W’) | YES | | NULL | |
    ±-------±--------------±-----±----±--------±------+
    5 rows in set (0.00 sec)

    12、在age后面增加一个address字段
    语法:alter table 表名 add 字段名 字段类型 after 字段名(需要添加到那个字段后就写那个字段名);
    mysql> alter table students add address char(50) after age;
    Query OK, 0 rows affected (0.02 sec)
    Records: 0 Duplicates: 0 Warnings: 0

    mysql> desc students;
    ±--------±--------------±-----±----±--------±------+
    | Field | Type | Null | Key | Default | Extra |
    ±--------±--------------±-----±----±--------±------+
    | uid | int(10) | YES | | NULL | |
    | id | int(15) | YES | | NULL | |
    | stname | char(20) | YES | | NULL | |
    | age | int(11) | YES | | NULL | |
    | address | char(50) | YES | | NULL | |
    | sex | enum(‘M’,‘W’) | YES | | NULL | |
    ±--------±--------------±-----±----±--------±------+
    6 rows in set (0.00 sec)

    13、删除表中的字段
    语法:alter table 表名 drop 字段名;
    mysql> alter table students drop address;
    Query OK, 0 rows affected (0.02 sec)
    Records: 0 Duplicates: 0 Warnings: 0

    mysql> alter table students drop uid;
    Query OK, 0 rows affected (0.01 sec)
    Records: 0 Duplicates: 0 Warnings: 0

    mysql> desc students;
    ±-------±--------------±-----±----±--------±------+
    | Field | Type | Null | Key | Default | Extra |
    ±-------±--------------±-----±----±--------±------+
    | id | int(15) | YES | | NULL | |
    | stname | char(20) | YES | | NULL | |
    | age | int(11) | YES | | NULL | |
    | sex | enum(‘M’,‘W’) | YES | | NULL | |
    ±-------±--------------±-----±----±--------±------+
    4 rows in set (0.00 sec)

    五、mysql语句,关于记录的操作(insert、delete、update语句)
    1、insert的使用方法
    语法:insert into 表名 values(字段值1,字段值2,字段值3);
    mysql> insert into students values(1,‘张三’,18,‘M’);
    Query OK, 1 row affected (0.01 sec)

    mysql> select * from students;
    ±-----±-------±-----±-----+
    | id | stname | age | sex |
    ±-----±-------±-----±-----+
    | 1 | 张三 | 18 | M |
    ±-----±-------±-----±-----+
    1 row in set (0.00 sec)

    2、同时插入多条数据,使用逗号分开
    mysql> insert into students values(2,‘harry’,20,‘W’),(3,‘tftp’,30,‘W’);
    Query OK, 2 rows affected (0.00 sec)
    Records: 2 Duplicates: 0 Warnings: 0
    mysql> select * from students;
    ±-----±-------±-----±-----+
    | id | stname | age | sex |
    ±-----±-------±-----±-----+
    | 1 | 张三 | 18 | M |
    | 2 | harry | 20 | W |
    | 3 | tftp | 30 | W |
    ±-----±-------±-----±-----+
    3 rows in set (0.00 sec)

    3、查询表中的内容
    mysql> select * from students;
    ±-----±-------±-----±-----+
    | id | stname | age | sex |
    ±-----±-------±-----±-----+
    | 1 | 张三 | 18 | M |
    | 2 | harry | 20 | W |
    | 3 | tftp | 30 | W |
    ±-----±-------±-----±-----+
    3 rows in set (0.00 sec)

    只查询需要的字段内容
    mysql> select id,stname from students; #只写需要的字段名
    ±-----±-------+
    | id | stname |
    ±-----±-------+
    | 1 | 张三 |
    | 2 | harry |
    | 3 | tftp |
    ±-----±-------+
    3 rows in set (0.00 sec)

    4、跨库查询表的内容
    mysql> use mysql;
    Database changed
    mysql> select * from students;
    ERROR 1146 (42S02): Table ‘mysql.students’ doesn’t exist
    mysql> select * from HA.students; #使用数据名.表名,进行跨库查询
    ±-----±-------±-----±-----+
    | id | stname | age | sex |
    ±-----±-------±-----±-----+
    | 1 | 张三 | 18 | M |
    | 2 | harry | 20 | W |
    | 3 | tftp | 30 | W |
    ±-----±-------±-----±-----+
    3 rows in set (0.00 sec)

    5、删除记录
    语法:delete from 表名 判断条件;
    例1:删除ID为3的记录
    mysql> use HA;
    Database changed
    mysql> delete from students where id=3;
    Query OK, 1 row affected (0.00 sec)

    mysql> select * from students;
    ±-----±-------±-----±-----+
    | id | stname | age | sex |
    ±-----±-------±-----±-----+
    | 1 | 张三 | 18 | M |
    | 2 | harry | 20 | W |
    ±-----±-------±-----±-----+
    2 rows in set (0.00 sec)

    例2:删除age为空的列

    mysql> insert into students(id,stname,age) values (4,‘lisi’,‘0’);
    mysql> select * from students;
    ±-----±-------±-----+
    | id | stname | age |
    ±-----±-------±-----+
    | 1 | 张三 | 18 |
    | 2 | harry | 20 |
    | 4 | lisi | 0 |
    ±-----±-------±-----+
    3 rows in set (0.00 sec)
    mysql> delete from students where age=0;
    Query OK, 1 row affected (0.20 sec)
    mysql> select * from students;
    ±-----±-------±-----+
    | id | stname | age |
    ±-----±-------±-----+
    | 1 | 张三 | 18 |
    | 2 | harry | 20 |
    ±-----±-------±-----+
    2 rows in set (0.00 sec)

    6、更新记录
    语法:update 表名 set 字段名=’’ 条件
    例1:将ID值为4的列,stname字段改为wangwu
    mysql> update students set stname=‘wangwu’ where id=4;
    Query OK, 1 row affected (0.00 sec)
    Rows matched: 1 Changed: 1 Warnings: 0

    mysql> select * from students;
    ±-----±-------±-----+
    | id | stname | age |
    ±-----±-------±-----+
    | 1 | 张三 | 18 |
    | 2 | harry | 20 |
    | 4 | wangwu | 0 |
    ±-----±-------±-----+
    3 rows in set (0.00 sec)

    例2:修改表的所有ID为2
    mysql> update students set id=2;
    Query OK, 2 rows affected (0.00 sec)
    Rows matched: 3 Changed: 2 Warnings: 0

    mysql> select * from students;
    ±-----±-------±-----+
    | id | stname | age |
    ±-----±-------±-----+
    | 2 | 张三 | 18 |
    | 2 | harry | 20 |
    | 2 | wangwu | 0 |
    ±-----±-------±-----+
    3 rows in set (0.00 sec)

    例3:同时更新多个字段内容,用逗号分开
    mysql> select * from students;
    ±-----±-------±-----+
    | id | stname | age |
    ±-----±-------±-----+
    | 2 | 张三 | 18 |
    | 2 | harry | 20 |
    | 2 | wangwu | 0 |
    ±-----±-------±-----+
    3 rows in set (0.00 sec)

    mysql> update students set stname=‘test’,age=50 where id=2;
    Query OK, 3 rows affected (0.00 sec)
    Rows matched: 3 Changed: 3 Warnings: 0

    mysql> select * from students;
    ±-----±-------±-----+
    | id | stname | age |
    ±-----±-------±-----+
    | 2 | test | 50 |
    | 2 | test | 50 |
    | 2 | test | 50 |
    ±-----±-------±-----+
    3 rows in set (0.00 sec)

    六、SQL基础查询语句
    语法:select 字段名1,字段名2 from 表名 条件;
    1、查询students表中的name,age
    mysql> select id,stname from students;
    ±-----±---------+
    | id | stname |
    ±-----±---------+
    | 1 | zhangsan |
    | 2 | wangwu |
    | 3 | lisi |
    | 4 | zhaoliu |
    ±-----±---------+
    4 rows in set (0.00 sec)

    mysql> select id,stname from students where id=3;
    ±-----±-------+
    | id | stname |
    ±-----±-------+
    | 3 | lisi |
    ±-----±-------+
    1 row in set (0.00 sec)

    2、去重查询
    mysql> select distinct stname,age from students;
    ±---------±-----+
    | stname | age |
    ±---------±-----+
    | zhangsan | 18 |
    | wangwu | 25 |
    | lisi | 30 |
    | zhaoliu | 40 |
    ±---------±-----+
    4 rows in set (0.00 sec)

    3、使用and和or进行多条件查询
    or和and同时存在,先算and的两边值,逻辑与先执行
    mysql> select * from students;
    ±-----±---------±-----+
    | id | stname | age |
    ±-----±---------±-----+
    | 1 | zhangsan | 18 |
    | 2 | wangwu | 25 |
    | 3 | lisi | 30 |
    | 4 | zhaoliu | 40 |
    ±-----±---------±-----+
    4 rows in set (0.00 sec)

    mysql> select * from students where id>1 and age<30;
    ±-----±-------±-----+
    | id | stname | age |
    ±-----±-------±-----+
    | 2 | wangwu | 25 |
    ±-----±-------±-----+
    1 row in set (0.00 sec)
    mysql> select * from students where id>1 or age<30;
    ±-----±---------±-----+
    | id | stname | age |
    ±-----±---------±-----+
    | 1 | zhangsan | 18 |
    | 2 | wangwu | 25 |
    | 3 | lisi | 30 |
    | 4 | zhaoliu | 40 |
    ±-----±---------±-----+
    4 rows in set (0.00 sec)

    mysql> select * from students where id>1 and (age=25 or age=30);
    ±-----±-------±-----+
    | id | stname | age |
    ±-----±-------±-----+
    | 2 | wangwu | 25 |
    | 3 | lisi | 30 |
    ±-----±-------±-----+
    2 rows in set (0.00 sec)

    4、区分大小写查询
    mysql> select stname from students where stname=‘wangwu’;
    ±-------+
    | stname |
    ±-------+
    | wangwu |
    ±-------+
    1 row in set (0.00 sec)

    mysql> select stname from students where stname=‘WANGWU’;
    ±-------+
    | stname |
    ±-------+
    | wangwu |
    ±-------+
    1 row in set (0.00 sec)

    默认查询不区分大小写

    mysql> select stname from students where binary stname=‘WANGWU’;
    Empty set (0.00 sec)

    mysql> select stname from students where binary stname=‘wangwu’;
    ±-------+
    | stname |
    ±-------+
    | wangwu |
    ±-------+
    1 row in set (0.00 sec)

    5、查询排序
    语法:select distinct 字段1,字段2 from 表名 order by 字段名;
    默认为升序asc
    mysql> select distinct id from students order by id asc;
    ±-----+
    | id |
    ±-----+
    | 1 |
    | 2 |
    | 3 |
    | 4 |
    ±-----+
    4 rows in set (0.00 sec)

    使用desc,进行降序排序
    mysql> select distinct id from students order by id desc;
    ±-----+
    | id |
    ±-----+
    | 4 |
    | 3 |
    | 2 |
    | 1 |
    ±-----+
    4 rows in set (0.00 sec)

    展开全文
  • MYSQL 基本语句

    2019-03-05 20:54:56
    基本操作: 1. 检索名字没有字母’R’的员工姓名; select * from emp where ename not like '%R%'; 2. 检索在任何位置有字母“A”的员工姓名; select * from emp where ename like '%a%'; 3. 检索所有员工姓名...

    Mysql

    修改表结构

    修改表名

    alter table old_name rename new_name;
    

    添加列

    alter table test add  column add_name varchar(10);
    

    删除列

    alter table test drop  column del_name;
    

    修改列类型

    alter table test modify address char(10) 
    alter table test change address address char(40)
    

    修改列名

    alter table test change  column address address1 varchar(30)
    

    修改列顺序

    把A放到第一列

    alter table card  modify A boolean first;
    

    把A放到B后面

    alter table card modify A boolean after B;
    

    各种Select语句

    查看区间内项

    选择第20个位置起的10个:

    select * from tb limit 20,10;
    

    案例数据库如下:在这里插入图片描述在这里插入图片描述

    1. 检索名字没有字母’R’的员工姓名;
    
    	select * from emp where ename not like '%R%';
    
    2. 检索在任何位置有字母“A”的员工姓名;
    
    	select * from emp where ename like '%a%';
    
    3. 检索所有员工姓名的前三个字母;
    
    	select substring(ename,1,3) from emp;
    
    4. 检索工作是sales的员工姓名;
    
    	select ename from emp where job='salesman';
    
    5. 检索最低工资在1500元的工作岗位;
    
    	select job from emp group by job having min(sal)>1500;
    
    6. 查询部门2所有的经理、部门3所有clerks以及所有其他工资超过2000元的员工姓名;
    
    	select ename from emp where (deptno=2 and job='manager') or (deptno=3 and job='clerk') or sal>2000;
    
    7. 检索员工津贴comm为null或comm小于300的员工姓名和津贴值;
    
    	select ename,comm from emp where comm=null or comm<300;
    
    8. 检索所有员工的姓名、职位和工资,按职位降序排列;
    
    	select ename,job,sal from emp order by job desc;
    
    9. 检索所有员工的年收入,按升序显示;
    
    	select ename,floor(12*sal) from emp order by sal asc;
    
    10. 检索与SCOTT的工作岗位相同的所有员工的姓名;
    
    	select ename from emp where job=(select job from emp where ename='scott');
    
    11. 检索所有职员的姓名和所在部门的名称;
    
    	select ename,dname from emp,dept where emp.deptno=dept.deptno;
    
    12. 检索部门“Research”或“Manager”的所有员工姓名;
    
    	select ename from emp where emp.deptno=(select deptno from dept where dname='research') or emp.deptno=(select deptno from dept where dname='manager');
    
    13. 通过子查询检索与Smith所在部门相同的所有员工的姓名;
    
    	select ename from emp where deptno = (select deptno from emp where ename='smith');
    
    14. 检索所有工资高于Smith工资的员工姓名和所在部门;
    
    	select ename,dname from emp,dept where sal>(select sal from emp where ename='smith') and emp.deptno=dept.deptno;
    
    15. 检索所有工资高于整个公司平均工资的员工的姓名和工资;
    
    	select ename,sal from emp where sal>(select avg(sal) from emp);
    
    16. 检索所有员工加入公司的天数;
    
    	select datediff(sysdate(),hiredate) from emp;
    	/*select date_format(hiredate,'%Y/%m/%d') from emp;*/
    
    17. 检索所有员工的姓名、所在部门名称和年薪;
    
    	select ename,dname,floor(sal*12) from emp,dept where emp.deptno=dept.deptno;
    
    18. 查询与3号部门某个员工工资相同的员工姓名和工资;
    
    	select ename,sal from emp where sal in(select sal from emp where deptno=3);
    
    19. 检索每个部门的名称和人数。
    
    	select dname,count(*) from emp,dept where emp.deptno=dept.deptno group byemp.deptno;
    
    20. 检索每一种工作的最低工资和工作。
    
    	select job,min(sal) from emp group by job;
    
    21. 查询各个部门经理职位的员工最低工资。
    
    	select deptno,min(sal) from emp where job='manager' group by deptno;
    
    22. 检索那些员工的姓名和工资,他们的工资高于3号部门员工的最高工资。(>any或max)
    
    	select ename,sal from emp where sal>(select max(sal) from emp where deptno=3);
    
    23. 查询各部门员工人数、平均工资、平均参加工作的天数;
    
    	select deptno,count(*),floor(avg(sal)),floor(avg(datediff(sysdate(),hiredate))) from emp group by deptno;
    
    24. 检索所有被雇佣日期是某个月的倒数第三天的员工名字;
    
    	select ename from emp where (month(hiredate)in(1,3,5,7,8,10,12) and  day(hiredate)=29) or 
    	(month(hiredate)in(4,6,9,11) and day(hiredate)=28) or 
    	((year(hiredate)%400=0 or (year(hiredate)%100<>0  and year(hiredate)%4=0))and month(hiredate)=2 and day(hiredate)=27) or
    	((year(hiredate)%4<>0 or (year(hiredate)%100=0  and year(hiredate)%400<>0))and month(hiredate)=2 and day(hiredate)=26);
    	/*select year(hiredate),month(hiredate),day(hiredate),time*/
    
    25. 检索至少有两个人的部门名称和人数;
    
    	select dname,count(*) from emp,dept where emp.deptno=dept.deptno group by emp.deptno having count(*)>=2;
    
    26. 检索所有部门名称和所有员工,包括那些没有任何员工的部门。
    
    	select ename,dname from emp right outer join dept on emp.deptno=dept.deptno;
    
    27. 检索所有员工及其相关领导的姓名。
    
    	select a.ename,b.ename mgr from emp a inner join emp b on a.mgr=b.empno;
     
    28. 查询聘用日期早于他们的领导的雇员姓名。
    
    	select a.ename from emp a,emp b where a.mgr=b.empno and to_days(a.hiredate)< to_days(b.hiredate);
    
    
    展开全文
  • mysql基本语句大全

    2018-09-14 10:33:42
    MySQL基本语句学习。
  • mysql 基本语句

    2014-03-21 16:19:03
    create table test (id int auto_increment,name varchar(255),price decimal);  alter table test add decsri text,add date datetime after price; alter table test drop descri ,drop price;
  • MySQL关系型数据库RDS中的老大哥,增删改查是MySQL入门的基础增删改查语句增删改查的语句命令为增:insert删:delete改:update查:SELECT或者show库操作创建数据库:create database shujukuba;创建带字符集的...
  • mysql基本语句10条:1.连接到数据库服务器mysql -h localhost -u root -p 密码2.查看所有库show databases3.选库use 库名4.查看库下面的表show tables5.基本建表语句create table msg( id int auto_increment ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 14,966
精华内容 5,986
关键字:

mysql基本语句

mysql 订阅