MYSQL-2_常用管理命令/SQL语句/中文编码/列类型

4 MySQL常用管理命令

       管理命令加 ;

       quit; 退出服务器连接

       show databases; 显示服务器上有哪些数据库

       use 数据库名; 进入指定的数据库

       show tables; 显示当前数据库中所有的数据表

       desc 表名; 描述表中都有哪些列(表头)describe(描述)

练习:使用来宾账户登录mysql数据库服务器,查看有哪些数据库

->mysql -uroot

-> show databases;

练习:分别进入test和phpmyadmin

-> use test; 

-> use phpmyadmin;

练习:查看phpmyadmin中以下表都有哪些列?

  pma__recent

  pma__history

  pma__favorite

->mysql -uroot  //连接数据库

-> use phpmyadmin;进入数据库 

-> desc pma__recent;

-> desc pma__history;

-> desc pma__favorite;

5.SQL语句

 SQL: Structured Query Language,结构化查询语言,用于操作关系型数据库服务器,对数据执行增、删、改、查等操作。

SQL命令的两种执行方式:

 1)交互模式:客户端输入一行,点击回车,服务器执行一行。适用于临时性的查看数据

 2)脚本模式:客户端吧要执行的多行命令编写在一个文本文件中,一次性交给服务器执行。适用于批量的操作方式

  mysql -uroot  < c:/xampp/..../02.sql(文件路径)回车(未登录数据库)

  --->  source < c:/xampp/..../02.sql   (已登陆数据库)

 

练习:使用脚本模式(03.sql)向服务器中提交多行SQL命令,包括显示所有的数据库、进入到phpmyadmin,显示所有的数据表,显示pma__recent有哪些列。尝试把其中一行写错,查看执行效果。

03.sql 

show databases;

use phpmyadmin;

show tables;

desc pma__recent;

 

mysql -uroot < E:\Web_XC\1903\2_MYSQL\day01\03.sql

SQL语法规范

 (1)每条语句必须以英文的分号作为结尾,一条语句可以跨越多行。

 (2)若某一条语句出现语法错误,则此条语句以及后边所有的语句不会再执行。

 (3)SQL命令不区分大小写,习惯上数据库关键字用大写,非关键字用小写。

 (4)SQL命令中可以使用单行注释(#...)多行注释(/*...*/),注释的内容不会被服务器所执行。

 

常用SQL命令

(1) 丢弃指定数据库,如果存在

DROP DATABASE IF EXISTS 数据库名;     

(2) 创建新的数据库

CREATE DATABASE 数据库名;         

(3)进入数据库

USE 数据库名;                             

(4) 创建保存数据的表

CREATE TABLE 表名(                 

       id INT,

       name VARCHAR(80),

       score INT 

);

(5)向数据表中插入数据(value插入多行数据时较快,values插入一行数据时较快)

INSERT INTO 表名 VALUE(' 1', 'tom','90');

(6)查询数据表中的所有数据

SELECT * FROM 表名;           

(7)修改数据

UPDATE 表名 SET score='95',name='tomi' WHERE id='6';

(8)删除数据

DELETE FROM 表名 WHERE id='3';

 

练习:编写脚本文件04_td.sql,先丢弃数据库td,如果存在;再创建数据库tedu,进入该数据库。

04_td.sql

#丢弃数据库td,如果存在

DROP DATABASE IF EXISTS td;

#创建数据库td

CREATE DATABASE td;

#进入该数据库

USE td;

练习:在tedu数据库中创建保存员工数据的表emp,包含员工编号eid、姓名name、地址addr、电话phone。

CREATE TABLE emp(

       eid INT,

       name VARCHAR(80), 

       addr VARCHAR(80),

       phone INT

);

练习:编写脚本文件05_dang.sql,先丢弃再创建数据库dang;进入到该数据库,创建保存图书的表book,包含编号bid、标题title、价格price、出版社publish;插入4条数据,删除编号为3的数据,修改编号为2的数据,查询所有数据。

#先丢弃再创建数据库dang,进入到该数据库,

DROP DATABASE IF EXISTS dang;

CREATE DATABASE dang;

USE dang;

#创建保存图书的表book,包含编号bid、标题title、价格price、出版社publish

CREATE TABLE book(

  bid INT,

  title VARCHAR(20),

  price FLOAT(2),

  publish VARCHAR(20)

);

#插入4条数据,

INSERT INTO book VALUE( '11','chinese','25.5','cq');

INSERT INTO book VALUE('12','math','35.5','sh');

INSERT INTO book VALUE( '13','english','40.00','bj');

INSERT INTO book VALUE( '14','pe','20','sz');

#删除编号为3的数据,

DELETE FROM book WHERE bid='13';

#修改编号为2的数据,

UPDATE book SET title='hello',price='5',publish='sc' WHERE bid='12';

#查询所有数据。

SELECT * FROM book;

  课后练习

(2)练习:编写脚本文件xz.sql,先丢弃再创建数据库xz;进入该数据库,创建保存用户的表user,包含uid,uname,upwd,email,phone,sex,userName(真实姓名),regTime(注册时间),isOnline(是否在线);插入5条数据,删除1条,更改1条,查询数据。

 

 

#先丢弃再创建数据库xz;进入该数据库,

DROP DATABASE IF EXISTS xz;

CREATE DATABASE xz;

USE xz;

#创建保存用户的表user,包含uidunameupwdemailphonesexuserName(真实姓名)regTime(注册时间)isOnline(是否在线)

CREATE TABLE user(

  uid INT,

  uname VARCHAR(20),

  upwd VARCHAR(20), #字符串密码

  email VARCHAR(20),

  phone VARCHAR(11),

  sex VARCHAR(1),

  userName VARCHAR(20),

  regTime VARCHAR(20), #2019/4/2

  isOnline VARCHAR(1)

);

#插入5条数据,

INSERT INTO user                    VALUE('661','tom','tompwd','@tom123.com','12345678521','m','tom','2019/4/2','T');

INSERT INTO user             VALUE('662','jack','jackpwd','@jack163.com','1511212234','m','jack','2019/4/2','T');

INSERT INTO user             VALUE('663','main','mainpwd','@mainqq.com','12345678521','f','tom','2019/4/2','F');

INSERT INTO user             VALUE('664','anny','annypwd','@annyoutlook.com','15222348521','f','anny','2019/4/2','T');

INSERT INTO user             VALUE('665','sum','sumpwd','@sum139.com','13925878521','m','sum','2019/4/2','T');

#删除1条,uid=663

DELETE FROM user WHERE uid='663';

#更改1条,

UPDATE user SET uname='coffe',isOnline='F' WHERE uid='665';

#查询数据。

SELECT * FROM user;

 1.标准SQL语句分类:

DDL: Data Define Language 定义数据结构

 CREATE/DROP/ALTER(修改表结构)

DML: Data Manipulate Language 操作数据

 INSERT/UPDATE/DELETE

DQL: Data Query Language 查询数据

 SELECT

DCL: Data Control Language 控制用户权限

 GRANT(授权)/REVOKE(收权)

 

2.计算机存储字符

2.1存储英文字符

 ASCII:总共有128个,对所有的英文字母和符号进行编码。

abc ->979899  ABC ->656667

 Lation-1:总共有256,兼容ASCII码,同时对欧洲符合进行编码(MySQL默认使用编码)

2.2存储中文字符

       GB2312:对常用六千多汉字进行编码,兼容ASCII

       GBK:对两万多汉字进行编码,兼容GB2312

       GIB5:台湾繁体字编码,兼容ASCII

       Unicode:对世界上主流国家常用语言进行编码,兼容ASCII码,不兼容GB2312GBKGIB5.(具体分为UTF-8UTF-16UTF-32存储方案)

2.3解决MySQL存储中文乱码

       使用UTF-8编码形式

       1)sql脚本文件另存为UTF-8编码形式

       2)客户端连接服务器编码(SET NAMES UTF8)

       3)服务器端创建数据库使用的编码(CREATE DATABASE xz CHARSET=UTF8;

          

 

练习:编写脚本文件05_dang.sql,先丢弃再创建数据库dang;进入到该数据库,创建保存图书的表book,包含编号bid、标题title、价格price、出版社publish;插入4条数据,在交互模式下查询

#客户端连接服务器设置UFT8

SET NAMES UTF8;

#先丢弃再创建数据库dang,进入到该数据库,

DROP DATABASE IF EXISTS dang;

CREATE DATABASE dang CHARSET=UTF8;

USE dang;

#创建保存图书的表book,包含编号bid、标题title、价格price、出版社publish;

CREATE TABLE book(

  bid INT, title VARCHAR(20), price FLOAT(5,2),  publish VARCHAR(20) );

#插入4条数据,

INSERT INTO book VALUE( '11','高中语文','25.5','重庆大学出版社'), ('12','高中数学','35.5','上海人民教育出版社'), ( '13','小学英语','40.00','上海复旦大学出版社'), ( '14','初中物理','20','北京大学出版社');

练习:编写脚本文件01_sina.sql,创建数据库sina,设置存储编码为UTF8,进入该数据库,创建数据表news保存新闻数据,包含nid,title(标题),ctime(发表时间),content(内容),author(作者),cfrom(来源);插入若干条数据。在交互模式下查询数据。

#创建数据库sina,设置存储编码为UTF8,进入该数据库,

SET NAMES UTF8;

DROP DATABASE IF EXISTS sina;

CREATE DATABASE sina CHARSET=UTF8;

USE sina;

#创建数据表news保存新闻数据,包含nid,title(标题),ctime(发表时间),content(内容),author(作者),cfrom(来源)

CREATE TABLE news(

  nid INT,

  title VARCHAR(20),

  ctime VARCHAR(10),

  content VARCHAR(50),

  author VARCHAR(4),

  cfrom VARCHAR(10));

#插入若干条数据。在交互模式下查询数据。

INSERT INTO news VALUE

('1','号召全社会','2019-04-03','铭记英雄','人民网','中国共产党新闻网'),

('2','号召全社会','2019-04-03','崇尚英雄','人民网','中国共产党新闻网'),

('3','号召全社会','2019-04-03','捍卫英雄','人民网','中国共产党新闻网'),

('4','号召全社会','2019-04-03','学习英雄','人民网','中国共产党新闻网'),

('5','号召全社会','2019-04-03','关爱英雄','人民网','中国共产党新闻网');

 

 

3.MySQL中的列类型

         创建数据表的时候,指定的列可以存储的数据类型

  CREATE TABLE table_name( id 列类型);

  TB——>GB——>MB——>KB——>BYTE(字节)——>BIT(位)

    1024   1024   1024    1024            8

 

 数值类型、日期时间类型、字符串类型

 

3.1数值类型

                                  

  TINYINT  微整型,占1个字节  范围 -128~127  引号可加可不加

  SMALLINT  小整型,占2个字节  范围 -32768~32767

  INT      整型,占4字节  范围 -2147483648~2147483647

  BIGINT  大整型,占8字节

  FLOAT(M,D)  单精度浮点型,占4字节 最多3.4E38(3.4*10^38),可能产生计算误差

  DOUBLE(M,D)  双精度浮点型,  占8字节,范围比BIGINT大的多,可能产生误差

  DECIMAL(M,D)  定点小数,不会产生计算误差。M代表总的有效位数,D代表小数点后的有效位数

  BOOL  布尔型,只有两个结果TRUE、FALSE(不能加引号),真正存储数据的时候会自动变成1和0;也可以直接使用1和0,数据库列类型会自动变成TINYINT 

3.2日期时间类型

  DATE  日期型  '2019-04-03'  引号必须加     

  TIME  时间型  '14:37:50'   

  DATETIME  日期时间型  '2019-04-03 14:37:50'

 

3.3字符串类型

  VARCHAR(M)  变长字符串,不会产生空间浪费,操作速度相对慢,M最大值是65535

  CHAR(M)    定长字符串,可能产生空间浪费,操作速度相对快,M最大值是255;用于存储手机号码、身份证号码等固定长度的字符串。

  TEXT   大型变长字符串,M最多2G     引号必须加  

 

 

CHAR(5)

VARCHAR(5)

a

a\0\0\0\0(空格)

a\0

ab

ab\0\0\0

ab\0

abcde

abcde

abcde

一二三

一二三\0\0

一二三\0

 

列名

类型

id

INT

age

TINYINT

commentCount(回复量)

INT

price

DECIMAL(6,2)   #9999.99

phone  

CHAR(11),

sex

BOOL

pubTime

DATE

练习: 编写02_xuezi.sql文件,先丢弃再创建数据库xuezi,设置存储的编码为UTF8,进入该数据库,创建保存笔记本数据的表laptop,包含lid,title(标题),price(价格),stockCount(库存量),shelfTime(上架时间),isIndex(是否为首页推荐);插入4条数据

 

#先丢弃再创建数据库xuezi,设置存储的编码为UTF8,进入该数据库,

SET NAMES UTF8;

DROP DATABASE IF EXISTS xuezi;

CREATE DATABASE xuezi CHARSET=UTF8;

USE xuezi;

#创建保存笔记本数据的表laptop,包含lid,title(标题),price(价格),stockCount(库存量),shelfTime(上架时间),isIndex(是否显示在首页);插入4条数据

CREATE TABLE laptop(

  lid INT,

  title VARCHAR(20),

  price DECIMAL(7,2),  #99999.99

  stockCount SMALLINT,

  shelfTime DATETIME,

  isIndex BOOL

);

INSERT INTO laptop VALUE

('1','ASUS(华硕)','7999.99','20','2019-04-03 15:15:15',TRUE),

('2','DELL(戴尔)','6999.99','18','2019-04-03 15:15:15',RTUE),

('3','Thinkpad(联想)','7999.99','22','2019-04-03 15:15:15',FALSE),

('4','Apple(苹果)','7999.99','29','2019-04-03 15:15:15',TRUE);

练习:编写脚本文件03_tedu.sql,创建数据库tedu,设置存储的编码为UTF8;进入该数据库,创建保存部门数据的表dept,包含did,dname(部门名称),empCount(员工数量);插入以下数据

   10   研发部   3

   20   运营部   2

   30   市场部   2

  创建保存员工数据的表emp,包含eid,ename(姓名),sex(性别),birthday(生日),salary(工资) ,deptId所属部门编号

  插入若干条数据。

 

#练习:编写脚本文件03_tedu.sql,创建数据库tedu,设置存储的编码为UTF8;进入该数据库,

SET NAMES UTF8;

DROP DATABASE IF EXISTS tedu;

CREATE DATABASE tedu CHARSET=UTF8;

USE tedu;

#创建保存部门数据的表dept,

CREATE TABLE dept(

  did INT,

  dname VARCHAR(5),

  empCount INT  );

#插入数据

INSERT INTO dept VALUE

(10,'研发部',3),

(20,'运营部',2),

(30,'市场部',2);

#创建保存员工数据的表emp,

#  插入若干条数据。

CREATE TABLE emp(

  eid INT,

  ename VARCHAR(4),

  sex BOOL,  #1 男 ,0 女

  birthday DATE,

  salary DECIMAL(8,2),

  deptId INT  );

INSERT INTO emp VALUE

(1,'张三',TRUE,'2015-3-28',7658,10),

(2,'李四',TRUE,'2010-3-28',7658,20),

(3,'王五',TRUE,'2011-3-28',7658,30),

(4,'麻六',TRUE,'2015-3-28',7658,10),

(5,'赵二',TRUE,'2015-3-28',7658,30);

课后任务:

编写脚本文件xz_2.sql,创建数据库xz,进入该数据库;

创建保存笔记本家族的表laptop_family,包含fid,fname 分类名称,laptopCount笔记本数量

     10 联想 2  

     20 戴尔 2

     30  小米  3

创建保存笔记本数据的表laptop,包含lid,title,price,spec规格,detail商品介绍,shelfTime,isOnsale是否在售,familyId所属家族编号;

插入若干条数据。

 

#设置服务器编码utf8

SET NAMES UTF8;

#创建数据库xz_2,进入该数据库;

DROP DATABASE IF EXISTS xz_2;

CREATE DATABASE xz_2 CHARSET=UTF8;

USE xz_2;

#创建保存笔记本家族的表laptop_family,

CREATE TABLE laptop_family(

  fid INT PRIMARY KEY,

  fname VARCHAR(10),

  laptopCount SMALLINT );

INSERT INTO laptop_family VALUE (10,'联想',2) ;

INSERT INTO laptop_family VALUE (20,'戴尔',2);

INSERT INTO laptop_family VALUE (30,'小米',3);

#创建保存笔记本数据的表laptop,

CREATE TABLE laptop(

  lid INT PRIMARY KEY,

  title VARCHAR(50),

  price DECIMAL(7,2),

  spec VARCHAR(20),

  detail VARCHAR(3000),

  shelfTime DATE,

  isOnline BOOL,

  familyId INT );

#插入若干条数据。

INSERT INTO laptop VALUE

(1,'联想A23',79999,'超薄','商品详情1','2017-11-11',1,10);

INSERT INTO laptop VALUE

(2,'戴尔B56',59999,'轻便', '商品详情2','2017-11-11',1,20);

INSERT INTO laptop VALUE

(3,'小米A23',69999,'普通', '商品详情3','2017-11-11',1,30);

INSERT INTO laptop VALUE

(4,'联想A25',79999,'超薄', '商品详情4','2017-11-11',0,10);

猜你喜欢

转载自blog.csdn.net/Andrexc/article/details/89344923