2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > MySQL简单命令和SELECT查询 给字段起别名【MySQL数据库】

MySQL简单命令和SELECT查询 给字段起别名【MySQL数据库】

时间:2018-08-26 11:11:28

相关推荐

MySQL简单命令和SELECT查询 给字段起别名【MySQL数据库】

Java养成计划----学习打卡第六十四天

内容导航

数据库的相关操作数据库的导入查看导入数据库中的表查看表中的数据查看表的基本结构【简化】查看表的结构【详细】查看mysql数据库的版本号查询当前使用的数据库退出mysqlSQL查询语句DQL查询一个表中的某个字段查询多个字段【使用逗号隔开就号】给查询的字段起别名【AS】如果起的别名里面有空格怎么办列参可直接数学运算

Java(打卡第六十四天)


MySQL数据库


博文不是每天都在发送,但是学习是每天都在进行的,因为不想为写而学,而是为学而写

昨天已经进行了MySQL的基本的安装,还有操作mySQL的命令比如SHOW ,CREATAE ,DESCRIBE,同时了解了分类,Data query language;数据 查询;SELECT data manipulation language INSERT , DELETE , UPDATE ; data definition language ; CREATE DROP ALTER SHOW ; transaction control language COMMIT ROLLBACK ; data control language GRANT , REVOKE

数据库的相关操作

数据库的导入

我们经常需要将sql文件给导入,那么这个时候就使用命令SOURCE + 路径,注意路径中不能有中文,这里我为了演示,先将数据库world使用命令

DROP DATABASE world;

删除之后,导入数据库

mysql> SOURCE D:\MySQL\Samples and Examples 8.0\Sample Databases\World\world-schema.sqlQuery OK, 1 row affected (0.00 sec)Query OK, 1 row affected (0.00 sec)Query OK, 1 row affected (0.00 sec)Query OK, 1 row affected (0.00 sec)Query OK, 1 row affected (0.00 sec)Query OK, 1 row affected (0.00 sec)Query OK, 1 row affected (0.00 sec)Query OK, 1 row affected (0.00 sec)Query OK, 1 row affected (0.00 sec)Query OK, 1 row affected (0.00 sec)Query OK, 1 row affected (0.00 sec)Query OK, 1 row affected (0.00 sec)

出现上述语句就是导入成功了,这里可以看一下

mysql> SHOW DATABASES;+--------------------+| Database |+--------------------+| cfengbase|| company || information_schema || mysql || performance_schema || sakila || sys|| world |+--------------------+8 rows in set (0.01 sec)

导入成功

查看导入数据库中的表

就像查看数据库使用SHOW DATABASES; 当使用USE base_name之后就可以使用

SHOW TABLES;

查看数据库中有那些表

mysql> SHOW TABLES;+-----------------+| Tables_in_world |+-----------------+| city || country || countrylanguage |+-----------------+3 rows in set (0.01 sec)

这里有3张表,第一张表为city表,第二张表为country表,第三张表是countylanguage表

查看表中的数据

增删查改中的查,是对数据进行的操作,那就是DQL,data query language,使用

SELECT * FROM table_name; //统一执行该语句

这里我们查看一下city表格的内容

mysql> SELECT * FROM city;+------+-----------------------------------+-------------+------------------------+------------+| ID | Name| CountryCode | District| Population |+------+-----------------------------------+-------------+------------------------+------------+| 1 | Kabul | AFG | Kabol | 1780000 || 2 | Qandahar| AFG | Qandahar|237500 || 3 | Herat | AFG | Herat |186800 || 4 | Mazar-e-Sharif| AFG | Balkh |127800 || 5 | Amsterdam| NLD | Noord-Holland|731200 || 6 | Rotterdam| NLD | Zuid-Holland |593321 || 7 | Haag| NLD | Zuid-Holland |440900 || 8 | Utrecht | NLD | Utrecht|234323 || 9 | Eindhoven| NLD | Noord-Brabant|43 || 10 | Tilburg | NLD | Noord-Brabant|193238 || 11 | Groningen| NLD | Groningen |172701 || 12 | Breda | NLD | Noord-Brabant|160398 || 13 | Apeldoorn| NLD | Gelderland |153491 || 14 | Nijmegen| NLD | Gelderland |152463 || 15 | Enschede| NLD | Overijssel |149544 || 16 | Haarlem | NLD | Noord-Holland|148772 || 17 | Almere | NLD | Flevoland |142465 || 18 | Arnhem | NLD | Gelderland |138020 || 19 | Zaanstad| NLD | Noord-Holland|135621 || 20 | ?s-Hertogenbosch | NLD | Noord-Brabant|129170 || 21 | Amersfoort | NLD | Utrecht|126270 |………………………………………………………………………………………………………………………………………………………………| 4064 | Odessa | USA | Texas |89293 || 4065 | Carson | USA | California |89089 || 4066 | Charleston | USA | South Carolina |89063 || 4067 | Charlotte Amalie | VIR | St Thomas |13000 || 4068 | Harare | ZWE | Harare | 1410000 || 4069 | Bulawayo| ZWE | Bulawayo|621742 || 4070 | Chitungwiza | ZWE | Harare |274912 || 4071 | Mount Darwin | ZWE | Harare |164362 || 4072 | Mutare | ZWE | Manicaland |131367 || 4073 | Gweru | ZWE | Midlands|128037 || 4074 | Gaza| PSE | Gaza |353632 || 4075 | Khan Yunis | PSE | Khan Yunis |123175 || 4076 | Hebron | PSE | Hebron |119401 || 4077 | Jabaliya| PSE | North Gaza |113901 || 4078 | Nablus | PSE | Nablus |100231 || 4079 | Rafah | PSE | Rafah |9 |+------+-----------------------------------+-------------+------------------------+------------+4079 rows in set (0.02 sec)

这张表记录的是世界主要的城市,第一列是城市的名称,第二个字段是城市所处的国家,第三个字段是城市所处的州【省】

mysql> DESCRIBE country;+----------------+---------------------------------------------------------------------------------------+------+-----+---------+-------+| Field| Type | Null | Key | Default | Extra |+----------------+---------------------------------------------------------------------------------------+------+-----+---------+-------+| Code | char(3) | NO | PRI | | || Name | char(52) | NO || | || Continent| enum('Asia','Europe','North America','Africa','Oceania','Antarctica','South America') | NO || Asia | || Region | char(26) | NO || | || SurfaceArea | float(10,2)| NO || 0.00 | || IndepYear| smallint | YES || NULL | || Population| int | NO || 0 | || LifeExpectancy | float(3,1)| YES || NULL | || GNP | float(10,2)| YES || NULL | || GNPOld | float(10,2)| YES || NULL | || LocalName| char(45) | NO || | || GovernmentForm | char(45) | NO || | || HeadOfState | char(60) | YES || NULL | || Capital | int | YES || NULL | || Code2| char(2) | NO || | |+----------------+---------------------------------------------------------------------------------------+------+-----+---------+-------+15 rows in set (0.01 sec)mysql> DESCRIBE city;+-------------+----------+------+-----+---------+----------------+| Field | Type| Null | Key | Default | Extra|+-------------+----------+------+-----+---------+----------------+| ID| int| NO | PRI | NULL | auto_increment || Name | char(35) | NO || ||| CountryCode | char(3) | NO | MUL | ||| District | char(20) | NO || ||| Population | int| NO || 0 ||+-------------+----------+------+-----+---------+----------------+5 rows in set (0.00 sec)mysql> DESCRIBE countrylanguage;+-------------+---------------+------+-----+---------+-------+| Field | Type| Null | Key | Default | Extra |+-------------+---------------+------+-----+---------+-------+| CountryCode | char(3) | NO | PRI | | || Language | char(30)| NO | PRI | | || IsOfficial | enum('T','F') | NO || F | || Percentage | float(4,1) | NO || 0.0| |+-------------+---------------+------+-----+---------+-------+4 rows in set (0.00 sec)

另外两张表就不看了,太多数据了,cmd窗口差点爆掉,宏观上看一下,三者是由关系的

查看表的基本结构【简化】

上面已经使用过很多次了,就是

DESC table_name;DESCRIBE table_name;

上面都是使用的全名,这里演示一下简化

mysql> DESC city;+-------------+----------+------+-----+---------+----------------+| Field | Type| Null | Key | Default | Extra|+-------------+----------+------+-----+---------+----------------+| ID| int| NO | PRI | NULL | auto_increment || Name | char(35) | NO || ||| CountryCode | char(3) | NO | MUL | ||| District | char(20) | NO || ||| Population | int| NO || 0 ||+-------------+----------+------+-----+---------+----------------+5 rows in set (0.00 sec)

查看表的结构【详细】

查看表的详细结构

SHOW CREATE TABLE table_name\G;

注意和上面简化的区别

mysql> SHOW CREATE TABLE city\G;*************************** 1. row ***************************Table: cityCreate Table: CREATE TABLE `city` (`ID` int NOT NULL AUTO_INCREMENT,`Name` char(35) NOT NULL DEFAULT '',`CountryCode` char(3) NOT NULL DEFAULT '',`District` char(20) NOT NULL DEFAULT '',`Population` int NOT NULL DEFAULT '0',PRIMARY KEY (`ID`),KEY `CountryCode` (`CountryCode`),CONSTRAINT `city_ibfk_1` FOREIGN KEY (`CountryCode`) REFERENCES `country` (`Code`)) ENGINE=InnoDB AUTO_INCREMENT=4080 DEFAULT CHARSET=latin11 row in set (0.00 sec)

可以看到其实这样子没有上面的直观,但是给出了原始的SQL语句

查看mysql数据库的版本号

之前使用java的命令时就知道 javac -version可以查看jdk的版本号,mysql也提供了查询命令,那就是select命令

SELECT VERSION();

注意这里带了一个小括号

mysql> SELECT VERSION();+-----------+| VERSION() |+-----------+| 8.0.27 |+-----------+1 row in set (0.00 sec)

非常直观的看到版本时8.0.27

查询当前使用的数据库

当操作数据库时,因为数据过多,或许就会忘记当前使用的数据库,这里还是使用的SELECT 查询

SHOW DATABASE();

演示一下,我上面操作很多次,已经找不到USE语句了,所以时需要查询的

mysql> SELECT DATABASE();+------------+| DATABASE() |+------------+| world|+------------+1 row in set (0.00 sec)

使用的时world数据库,里面是有三张表的

额外提醒一下,mysql语句是不见分号不终止的,分号代表语句的结束同时也可以使用==\c==来终止一条语句

所以我们创建表的时候,就不使用分号,换行书写来达到结构的清晰

退出mysql

这里很简单,昨天已经提到过了,就是EXIT;

mysql> EXIT;Bye

这里给大家来一次连续的操作

C:\Users\OMEY-PC>mysql -h localhost -u cfeng -pEnter password: ************mysql> SHOW DATABASES;mysql> USE cfengbase;mysql> SHOW TABLES;mysql> DESCRIBE fruits;mysql> SHOW CREATE TABLE fruits\G;mysql> SELECT * FROM fruits;+------+-------------+--------------+---------------+---------------+| id | fruits_name | fruits_price | fruits_origin | fruits_remark |+------+-------------+--------------+---------------+---------------+| 1001 | 葡萄 |3.7 | 山东| 红香妃 || 1002 | 苹果 |2.8 | 山东| 红富士 || 1003 | 香蕉 | 6 | 海南| 小芭蕉 |+------+-------------+--------------+---------------+---------------+3 rows in set (0.01 sec)

SQL查询语句DQL

其实上面已经使用到了查询语句了,比如查询一个表中的所有数据就是使用的DQL

查询一个表中的某个字段

SELECT col_name FROM table_name;

这和上面查询库中的所有数据是相似的,其实想一想就知道了,因为*代表的就是很多,就是所有的字段,和java中的关连属性的数目的表示相同

其中SELECT FROM 都是关键字,不区分大小写,而小写的col_name和table_name是标识符,大写容易识别,但是不要写错单词,演示一下查询字段,这里就以fruits表,查询fruits_name字段

mysql> SELECT fruits_name FROM fruits;+-------------+| fruits_name |+-------------+| 葡萄 || 苹果 || 香蕉 |+-------------+3 rows in set (0.00 sec)

这样查询,就可以检查查询的量了,一次性显示所有内容,可能屏幕都显示不完全

查询多个字段【使用逗号隔开就号】

既然查询一个字段我们已经知道了,并且查询所有字段,也就是整个表的内容也知道

查询多个字段就不难推出了

SELECT col_name1,col_name2…… FROM table_name;

这里我们可以先简单查看表的结构,再查询表的字段,这里就同时查询fruits的name和origin两个字段

mysql> DESC fruits;+---------------+-------------+------+-----+---------+----------------+| Field | Type | Null | Key | Default | Extra|+---------------+-------------+------+-----+---------+----------------+| id | int | NO | PRI | NULL | auto_increment || fruits_name | varchar(45) | NO || NULL ||| fruits_price | double| NO || NULL ||| fruits_origin | varchar(45) | NO || NULL ||| fruits_remark | varchar(45) | NO || NULL ||+---------------+-------------+------+-----+---------+----------------+5 rows in set (0.00 sec)mysql> SELECT fruits_name,fruits_origin FROM fruits;+-------------+---------------+| fruits_name | fruits_origin |+-------------+---------------+| 葡萄 | 山东|| 苹果 | 山东|| 香蕉 | 海南|+-------------+---------------+3 rows in set (0.00 sec)

最容易犯的错误还是把单词拼写错误,还可以使用SHOW ERRORS, SHOW WARNINGS;查看具体的错误原因和所在的位置

这里可以稍微总结一下

查询一个字段 SELECT col_name FROM table_name;查询多个字段 SELECT col_name1,col_name2,col_name3 …… FROM table_name;查询所有字段 使用之前的方式,SELECT * FROM table_name; 方便但是效率要低一些,因为这是一个码,需要解码成所有的字段,这是需要时间的,所以实际开发中很少使用直接写出所有的字段 推荐使用,但是在自己的DOS窗口快速查询所有的内容可以使用*

给查询的字段起别名【AS】

在查询的时候,字段的名字是可以不是原本的名字,比如水果的发源地源表是fruits_origin,这个很长,不方便,起个别名发源地

查询的时候起别名的方式是AS,注意原来的字段名并没有修改

SELECT col_name1,col_name2 AS newname FROM table_name;

这里需要注意,查询时逗号后面都是字段名,所以as的前面时字段名,后面才是字段的别名

这里演示一下给水果发源地查询的时候起别名

mysql> SELECT fruits_name,发源地 AS fruits_origin FROM fruits;ERROR 1054 (42S22): Unknown column '发源地' in 'field list' //报错,顺序错误mysql> SELECT fruits_name,fruits_origin AS 发源地 FROM fruits;+-------------+--------+| fruits_name | 发源地 |+-------------+--------+| 葡萄 | 山东 || 苹果 | 山东 || 香蕉 | 海南 |+-------------+--------+3 rows in set (0.00 sec)

SELECT操作是DQL语句,不是DML,所以不会改变原来的数据的

这里的AS是可以省略的,但是不能加逗号,上面提到逗号后面都是字段名,所以系统就会寻找是否有字段,就会报错

mysql> SELECT fruits_name 水果名称 FROM fruits;+----------+| 水果名称 |+----------+| 葡萄|| 苹果|| 香蕉|+----------+3 rows in set (0.00 sec)

如果起的别名里面有空格怎么办

如果别名里面有空格,如果按照AS或者省略的方式都会报错的,系统认为字段后面是别名,别名后面没有逗号就会寻找FROM,可是找到的是别名的另外一半,就报错了

解决的办法是使用引号括起来,单引号,双引号都是可以的

SELECT col_name '水果 名称' FROM table_name;SELECT col_name "水果 名称" FROM table_name;

这里还是演示一下使用

mysql> SELECT fruits_name "水果 名称" FROM fruits;+------------+| 水果 名称 |+------------+| 葡萄 || 苹果 || 香蕉 |+------------+3 rows in set (0.00 sec)mysql> SELECT fruits_name '水果 名称' FROM fruits;+------------+| 水果 名称 |+------------+| 葡萄 || 苹果 || 香蕉 |+------------+3 rows in set (0.00 sec)

注意:所有的数据库中字符串是采用单引号括起来的,双引号有的数据库用不了

列参可直接数学运算

字段比如水果的价格,如果都涨价那么就直接做加法,只是加法后如果不起别名,那么字段名也就会运算

SELECT price+3 FROM fruits;SELECT price+3 水果价格 FROM fruits;

注意这都是查询时所做的操作,原来的数据并没有改变

这里可以示范一下

mysql> SELECT fruits_name 水果名称,fruits_price FROM fruits;+----------+--------------+| 水果名称 | fruits_price |+----------+--------------+| 葡萄|3.7 || 苹果|2.8 || 香蕉| 6 |+----------+--------------+3 rows in set (0.00 sec)mysql> SELECT fruits_name 水果名称,fruits_price+3 FROM fruits;+----------+----------------+| 水果名称 | fruits_price+3 |+----------+----------------+| 葡萄| 6.7 || 苹果| 5.8 || 香蕉| 9 |+----------+----------------+3 rows in set (0.00 sec)mysql> SELECT fruits_name 水果名称,fruits_price+3 水果新价格 FROM fruits;+----------+------------+| 水果名称 | 水果新价格 |+----------+------------+| 葡萄| 6.7 || 苹果| 5.8 || 香蕉|9 |+----------+------------+3 rows in set (0.00 sec)

这里起别名如果是中文最好使用单引号括起来,因为中文也是字符串,所以就使用单引号

查询时可以使用as ,数学运算来得到想要的查询结果,起别名碰到中文和空格加上单引号,查询时不会改变原数据库的内容,使用SELECT

今天就先了解简单查询,明天会详细介绍条件查询和模糊查询~🌳

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。